4.1 慢查询

  慢查询简介,慢查询顾名思义是将redis执行命令较慢的命令记录下来。

  一条命令的生命周期

  1. client通过网络向Redis发送一条命令
  2. 由于Redis是单线程应用,可以把Redis想像成一个队列,client执行的所有命令都在排队等着server端执行
  3. Redis服务端按顺序执行命令
  4. server端把命令结果通过网络返回给client

使用场景

两点说明

  • (1) 慢查询发生在第3阶段
  • (2) 客户端超时不一定慢查询,但慢查询是客户端超时的一个可能因素

  慢查询是一个先进先出的队列,如果一条命令在执行过程中被列入慢查询范围内,就会被放入一个队列,这个队列是基于Redis的列表来实现,而且这个队列是固定长度的,当队列的长度达到固定长度时,最先被放入队列就会被pop出去。慢查询队列保存在内存之中,不会做持久化,当Redis重启之后就会消失。

使用场景

  结合上面图示这里涉及到两个配置和三个慢查询命令。

先看两个配置
  • (1)slowing-max-len
  • (2)slowing-log-slower-than
slowlog-max-len             慢查询队列的长度
slowlog-log-slower-than     慢查询阈值(单位:微秒),执行时间超过阀值的命令会被加入慢查询命令
    如果设置为0,则会记录所有命令,通常在需要记录每条命令的执行时间时使用
    如果设置为小于0,则不记录任何命令
slowlog list                慢查询记录
慢查询配置方法

1.修改配置文件重启

修改/etc/redis.conf配置文件,配置慢查询
修改配置方式应该在第一次配置Redis中时配置完成,生产后不建议修改配置文件

2.动态配置

127.0.0.1:6379> config get slowlog-max-len
1) "slowlog-max-len"
2) "128"
127.0.0.1:6379> config get slowlog-log-slower-than
1) "slowlog-log-slower-than"
2) "10000"
127.0.0.1:6379> config set slowlog-max-len 1000
OK
127.0.0.1:6379> config get slowlog-max-len
1) "slowlog-max-len"
2) "1000"
127.0.0.1:6379> config set slowlog-log-slower-than 1000
OK
127.0.0.1:6379> config get slowlog-log-slower-than
1) "slowlog-log-slower-than"
2) "1000"

  与配置对应的是三个慢查询命令

  1. slowlog get [n]:获取慢查询队列
  2. slowlog len:获取慢查询队列长度
  3. slowlog reset:清空慢查询队列

  值得注意的是:

  1. slowing-max-len不要设置过大,默认10ms,通常设置1ms
  2. slowing-log- slower-than不要设置过小,通常设置1000左右。
  3. 理解命令生命周期。
  4. 定期持久化慢查询。
版权声明: 本文为智客工坊「沉晓」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

results matching ""

    No results matching ""