redis-4.0-slowlog慢日志查询
0x00 简介
redis 慢查询日志, 是系统记录那些超过指定查询时间的日志,执行的时间不包括和客户端的IO操作,和响应时间等, 而只是实际redis执行命令的时间。
0x01 配置
慢查询日志有两个参数:
slowlog-log-slower-than: 单位微秒,指定redis执行命令的最大时间,超过将记录到慢查询日志中, 不能是负值。如果需要记录每条命令,设置为0就可以了。
slowlog-max-len: 设置慢查询日志存储长度,如果达到最大值,最老的那日志将被清除掉。
这两个参数可以直接写到配置文件里面永久生效,也可以直接使用config set [参数名] [值]的方式临时修改:
CONFIG SET slowlog-log-slower-than 1000
CONFIG SET slowlog-max-len 10000
0x02 列出慢日志
慢日志都是存储在内存里面的,没有持久化的磁盘上,所以获取慢日志的时候,相应都是非常快的,对性能几乎没什么影响。使用slowlog get命令,可以获取到所有的慢查询记录,也可以指定获取最后若干数量的记录。
slowlog get 100 #获取最后100条记录
0x03 示例
127.0.0.1:6379> SLOWLOG get 2
1) 1) (integer) 2
2) (integer) 1516199156
3) (integer) 22
4) 1) "SLOWLOG"
2) "get"
5) "127.0.0.1:39644"
6) "client1"
2) 1) (integer) 1
2) (integer) 1516199151
3) (integer) 59
4) 1) "info"
5) "127.0.0.1:39644"
6) "client444"
返回的每个慢查询实体,都由6个字段组成,如果是4.0之前的版本只有前面4个字段:
第一个字段是每个慢查询唯一标识(每个慢查询实体的ID都是唯一的,而且不会被重新设置,只会在redis重启后才会被重置);
处理完命令后的,Unix 时间戳;
执行命令所需要的时间,单位微秒;
命令的参数列表,是个数组类型;
发起请求的客户端IP和端口;
客户端的名称(通过client setname client1 设置的客户端的名称)。
0x04 日志清理
查看当前慢查询日志长度
SLOWLOG LEN
清空慢查询日志内容
SLOWLOG RESET