Redis之慢查询分析

Redis除了提供5种数据结构之外,还为我们提供了诸如慢查询分析,Redis Shell, Pipeline,事物和Lua脚本,Bitmaps,HyperLogLog,发布订阅和CEO等功能,这些功能在某些场景可以发挥重要的作用.

  • 慢查询分析: 通过慢查询分析,找到有问题的命令进行优化.

许多存储系统(例如MySQL)提供慢查询日志帮助开发和运维人员定位系统存在的慢操作。所谓慢查询日志就是系统在命令执行前后计算每条命令执行的时间,当超过预设阀值,就将这条命令的相关信息(例如: 发生时间,耗时,命令的详细信息)记录下来,Redis也提供了类似的功能.

  • 一条客户端命令的生命周期
发送命令->命令排队->命令执行       

注意!!!,慢查询只统计步骤3,所以没有慢查询并不代表客户端没有超时问题

  • 慢查询的两个配置参数
slowlog-log-slower-than    设置预设阀值,单位是微秒,默认是10000

slowlog-log-slower-than=0会记录所有的命令,slower-log-slower-than<0对于任何命令都不会记录.

slowlog-max-len    -- 设置存储慢查询日志的列表的最大长度

实际上Redis使用了一个列表来存储慢查询日志,slowlog-max-len就是用来设置这个列表的长度,当列表满了之后,又有新的命令的执行时间超过了预设阀值,则列表的第一条数据出列,第6条数据入列.

Redis有两种修改配置的方法: 一种是修改配置文件,一种是使用config set命令动态修改.

动态修改配置如下:

>>>config set slowlog-log-slower-than 20000
>>>config set slowlog-max-len 1000
>>>config rewrite   --将修改后的配置持久化到本地配置文件

虽然慢查询日志存放在Redis内存列表中,但是Redis并没有提供相应的键,而是提供命令来访问和管理

  • 获取慢查询日志记录
>>>slowlog get n     -- n为慢查询日志条数,不指定n则输出所有的慢查询日志

每个慢查询日志由4个属性组成,分别是慢查询日志的标识id,发生时间戳,命令耗时,执行命令.

  • 获取慢查询日志列表的长度
>>>slowlog len
  • 清楚慢查询日志列表
>>>slowlog reset
  • 慢查询日志配置建议

slowlog-max-len 配置建议: 线上建议调大慢查询日志列表长度,因为记录慢查询时Redis会对长命令进行截断操作,并不会占用大量内存,增大慢查询列表可以减缓慢查询被剔除的可能。线上可以设置为1000以上。

slowlog-log-slower-than 设置建议: 对于高流量的场景,建议设置为1毫秒(也就是10000微妙)

你可能感兴趣的:(Redis之慢查询分析)