慢查询只记录命令执行时间,并不包括命令排队和网络传输时间。所以客户端执行命令的时间会大于命令实际执行时间。由于命令执行排队机制,慢查询会致使其余命令级联阻塞,所以当客户端出现请求超时,须要检查该时间点是否有对应的慢查询,从而分析出是否为慢查询致使的命令级联阻塞网络
Redis提供了slowlog-log-slower-than和slowlog-max-len配置来解决这两个问题日志
若是slowlog-log-slower-than=0会记录全部的命令,slowlog-log-slower-than<0对于任何命令都不会进行记录code
在Redis中有两种修改配置的方法,一种是修改配置文件,另外一种是使175用config set命令动态修改。例以下面使用config set命令将slowlog-log-slower-than设置为20000微秒,slowlog-max-len设置为1000队列
config set slowlog-log-slower-than 20000 config set slowlog-max-len 1000 config rewrite
若是要Redis将配置持久化到本地配置文件,须要执行config rewrite命令内存
虽然慢查询日志是存放在Redis内存列表中的,可是Redis并无暴露这个列表的键,而是经过一组命令来实现对慢查询日志的访问和管理get
每一个慢查询日志有4个属性组成,分别是慢查询日志的标识id、发生时间戳、命令耗时、执行命令和参数it
获取慢查询日志列表当前的长度 slowlog len可视化
慢查询日志重置 slowlog reset配置
因为慢查询日志是一个先进先出的队列,也就是说若是慢查询比较多的状况下,可能会丢失部分慢查询命令,为了防止这种状况发生,能够按期执行slow get命令将慢查询日志持久化到其余存储中(例如MySQL),而后能够制做可视化界面进行查询请求