redis 慢查询日志原理解析
作用
Redis 的慢查询日志功能用于记录执行时间超过给定时长的命令请求, 用户可以通过这个功能产生的日志来监视和优化查询速度。类似于mysql的慢查询日志
配置
- slowlog-log-slower-than:指定超过多少毫秒的日志会记录到redis日志上面,对应mysql的long_query_time(mysql默认是10s的慢查询日志会记录到mysql查询日志)
- slowlog-max-len : 选项指定服务器最多保存多少条慢查询日志。超过最多的慢查询日志时候,系统会选择最旧的一条慢查询日志进行删除。然后新增慢查询日志
慢查询日志在redis底层的数据结构
可以看到图片中熟悉的rediserver结构,aop rdb相关的持久化策略和List clients客户端的状态redisDB[] db(16个redis数据库)都存放在redisserver里面。
上图维slowlogEntry的相关数据结构。可以看到argv是一个数组,存储的参数值都是sds对象
客户端操作简介
CONFIG SET slowlog-log-slower-than num:设置客户端慢查询时间
CONFIG SET slowlog-max-len num:设置慢查询日志记录的条数上限
SLOWLOG GET :查询慢查询日志