Redis慢查询

Redis慢查询

慢查询是一个先进先出的队列,且长度固定,保存在内存中(redis重启该队列就会消失),
当一个命令被执行且超过慢查询的阈值时,这条命令就会被加入到慢查询队列中。

Redis客户端请求的生命周期

1.客户端发送命令到Redis

2.命令在Redis排队

3.Redis执行命令

4.Redis返回执行结果到客户端

说明:

1.慢查询发生在第三阶段(也就是说执行的时候慢才是慢,并不包括命令传输、排队这些情况,如 keys * 命令);

2.Redis客户端超时不一定是慢查询,慢查询可能是引起客户端超时的一个因素

慢查询参数

Redis慢查询有两个参数,分别代表慢查询队列的长度和慢查询的阈值,且这两个参数支持动态配置。

  • slowlog-max-len 慢查询队列的长度,默认值128

  • slowlog-log-slower-than 慢查询的阈值(单位:微秒) 默认值10000

    slowlog-log-slower-than=0    # 表示记录所有命令
    
    slowlog-log-slower-than<0    # 表示不记录任何命令
    

配置方法

  1. 修改配置文件并重启

  2. 动态配置

    config set slowlog-max-len 1000
    config set slowlog-log-slower-than 1000
    config rewrite   # 使配置永久生效
    

慢查询命令

slowlog  get [n]    # 获取慢查询队列,用n可获取指定条数
slowlog  len        # 获取慢查询队列的长度
slowlog  reset      # 清空慢查询队列

运维经验

  1. slowlog-max-len 不要设置过小,通常1000左右

  2. slowlog-log-slower-than 不要设置过大(单位:微秒),默认10ms,通常设置1ms,因为当redis命令超过1ms时可能就会对性能有一定影响了

  3. 定期持久化慢查询

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 核心知识点:1.什么是慢查询?2.客户端执行一条命令的步骤?3.阈值和慢查询日志的设置?4.慢查询日志的操作命令:...
    MoonMonsterss阅读 3,372评论 0 0
  • Redis 客户端执行命令分四个部分: 发送命令 命令排队 命令执行 返回结果 Redis 的慢查询只统计步奏3)...
    非典型程序员阅读 6,459评论 0 2
  • 慢查询分析 Redis客户端执行一条命令分为如下4个部分: 慢查询的两个配置参数 对于慢查询功能,需要明确两件事:...
    huxt阅读 2,532评论 0 0
  • redis 慢查询 什么是慢查询 MySQL会记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为...
    希希里之海阅读 3,097评论 0 0
  • 在MySql提供慢查询日志来定位系统存在的慢操作。慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预...
    PHP的艺术编程阅读 3,723评论 0 0