【Redis】实用功能

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Francis123580/article/details/82465633

慢查询分析

修改配置

1.修改配置文件

# 超过20ms记录
slowlog-slower-than 20000
# 存储1000调慢查询记录
slowlog-max-len 1000

2.命令动态修改

config set slowlog-slower-than 20000
config set slowlog-max-len 1000
config rewrite

基本操作

获取慢查询日志:slowlog get [n](返回值:1.id; 2.时间戳; 3.命令耗时; 4.执行命令和参数)

获取慢查询日志列表当前长度:slowlog len

慢查询日志重置:slowlog reset


最佳实践
  • slowlog-max-len配置建议:线上调大,1000以上
  • slowlog-log-slower-than配置建议:根据并发量调整,1毫秒,则QPS最多为1000
  • 客户端出现请求超时,检查对应时间点是否有慢查询(慢查询记录执行时间<客户端执行总时间)
  • 定期执行slow get防止慢查询记录因为过多而丢失

Redis Shell

redis-cli

输出100次内存使用量,间隔1秒:redis-cli -r 100 -i 1 info | grep userd_memory_human

把输入作为参数:echo "world" | redis-cli -x set hello


redis-server

检测当前操作系统能否提供1G内存:redis-server --test-memory 1024


redis-benchmark

100用户同时请求Redis,执行20000次:redis-benchmark -c 100 -n 20000

Pipeline

问题:Redis提供了批量操作命令,有效节约RTT,但是大部分命令不支持批量操作

解决:Pipeline将一组Redis命令进行组装,通过一次RTT传输,节约了时间

最佳实践:多次Pipeline组装命令,降低 网络堵塞 和 客户端等待

事务与Lua

事务:将一起执行的命令放在 multi 和 exec 命令之间

Lua:在Redis执行Lua脚本有 eval 和 evalsha 命令

新数据模型

Bitmaps:操作位功能,有效地提高内存使用率和开发效率

HyperLogLog:利用极小的内存空间完成独立总数的统计

发布订阅

发布消息:publish channel message

订阅消息:subscribe channel [channel ...]

查看活跃的频道:pubsub channels [pattern]

查看频道订阅数:pubsub numsub [channel ...]

小结

慢查询分析、Redis Shell可以用于测试分析Redis
Pipeline、事务和Lua可以用来优化速度,增加原子性
新数据模型、发布订阅可以用在特殊的场景

 
 

猜你喜欢

转载自blog.csdn.net/Francis123580/article/details/82465633