慢查询分析
修改配置
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可以用来优化速度,增加原子性
新数据模型、发布订阅可以用在特殊的场景