redis 慢查询
2022-10-23
什么是 Redis 慢查询?
通信流程如下:
Redis 的所有指令全部会存放到队列, 由单线程按顺序获取并执行指令, 如果某个指令执 行很慢, 会出现阻塞, 以上图可以得出: Redis 的慢查询指的是在执行第 3 个操作的时候发生 的.
Redis 设值慢查询时间
a),动态设置 6379:> config set slowlog-log-slower-than 10000 //10 毫秒
使用 config set 完后,若想将配置持久化保存到 redis.conf,要执行 config rewrite
b),redis.conf 修改:找到 slowlog-log-slower-than 10000 ,修改保存即可
注意:slowlog-log-slower-than =0 记录所有命令 -1 命令都不记录
Redis 慢查询原理
慢查询记录也是存在队列里的,slow-max-len 存放的记录最大条数,比如设置的 slow-max-len=10,当有第 11 条慢查询命令插入时,队列的第一条命令 就会出列,第 11 条入列到慢查询队列中, 可以 config set 动态设置,也可以修改 redis.conf 完成配置
Redis 慢查询的命令
获取队列里慢查询的命令: slowlog get
获取慢查询列表当前的长度: slowlog len
//以上只有 1 条慢查询,返回 1;
- 对慢查询列表清理(重置):
slowlog reset
//再查 slowlog len 此时返回 0 清空; - 对于线上 slow-max-len 配置的建议:线上可加大 slow-max-len 的值,记录慢查询存长命令时 redis 会做截断,不会占用大量内存,线上可设置 1000 以上
- 对于线上 slowlog-log-slower-than 配置的建议:默认为 10 毫秒,根据 redis 并发量来调整,对于高并发比建议为 1 毫秒
- 慢查询是先进先出的队列,访问日志记录出列丢失,需定期执行 slowlog get,将结果存储到其它设备中(如 mysql)