美文网首页
redis慢查询

redis慢查询

作者: steamed_bun | 来源:发表于2020-01-13 11:46 被阅读0次

    当redis命令执行时间大于设置的时间,redis会将此命令标记为慢查询,并记录到慢查询d日志队列中

    1. redis命令执行的步骤

      • 1⃣️客户端发送命令到redis
      • 2⃣️命令进入队列排队
      • 3⃣️redis执行命令
      • 4⃣️返回结果
        注:所谓的命令执行时间只指【3⃣️redis执行命令】这一步(其实也很明显只会有这一步,1⃣️4⃣️是网络开销,2⃣️依赖于其他命令的执行速度)
    2. 慢查询配置


      • slowlog-log-slower-than 指定被标记为慢查询的时间阙值
        • 时间的单位是微秒,即1000000是1秒
        • 默认是:10000微秒
        • 负数将禁用慢查询日志
        • 0会强制记录每一个命令为慢查询
        • 支持动态修改,无需重启redis config set slowlog-log-slower-than 1000
      # The following time is expressed in microseconds, so 1000000 is equivalent
      # to one second. Note that a negative number disables the slow log, while
      # a value of zero forces the logging of every command.
      slowlog-log-slower-than 10000
      
      • 建议设置: 1000μs

      • slowlog-max-len指定慢查询日志队列的长度
        • 默认是:128
        • 长度没有限制,但是注意,慢查询日志将记录在内存
        • 采用先进先出原则,当队列满了且来了一条新的命令,则最先进入的命令弹出
        • 支持动态修改,无需重启redis config set slowlog-max-len 1000
      # There is no limit to this length. Just be aware that it will consume memory.
      # You can reclaim memory used by the slow log with SLOWLOG RESET.
      slowlog-max-len 128
      
      • 建议设置: 1000左右
        • 定期持久化日志

    3. 慢查询的命令

      • slowlog get [n] 获取慢查询,n是条数
        • 返回值示例(设置slowlog-log-slower-than为0)
        • set hh as
          slowlog get 1
           1) (integer) 0 # 每个慢查询条目的唯一的递增标识符 
            #在Redis服务器运行期间绝不会被重置,仅在Redis服务重启才重置它
           2) (integer) 1578886475 # 处理记录命令的unix时间戳
           3) (integer) 1892 # 命令执行所需的总时间,以微秒为单位
           4)   1) "set" # 组成该命令的参数的数组
                2) "hh"
                3) "as"
          
      • slowlog reset 清空慢查询队列,回收慢速日志使用的内存
      • slowlog len 慢查询队列长度

    相关文章

      网友评论

          本文标题:redis慢查询

          本文链接:https://www.haomeiwen.com/subject/ddkmactx.html