美文网首页
redis慢查询

redis慢查询

作者: tracy_668 | 来源:发表于2018-09-16 23:51 被阅读24次

       很多存储系统(Mysql)提供慢查询日志帮助开发和运维人员定位系统存在的慢操作,慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阈值时,就把这条命令的相关信息记录下来,Redis同样提供类似的功能。


    image.png

    Redis客户端执行一条命令分为4个部分,如下:

    1. 发送命令
    2. 命令排队
    3. 命令执行
    4. 返回结果
        慢查询只统计命令执行的时间,因此,没有慢查询并不代表客户端没有超时时间。Redis提供了slowlog-log-slower-than(毫秒)和slowlog-max-len,前者表示预设的阈值,当一条命令的执行时间超过阈值时,它将被记录到慢查询日志中去。而slowlog-max-len只说明了慢查询日志最多存储多少条,并没有说明日志存放在哪,实际上Redis使用了一个列表来存储慢查询日志,slowlog-max-len表示列表的长度,当列表长度超过该值就把列表第一天数据出列。

    获取慢查询日志

    slowlog  get  [n]  // n 指定条数
    slowlog len // 日志长度
    slowlog reset // 重置, 实际是清理列表
    
    image.png

    小结

    • 慢查询只记录命令执行的时间,并不包括命令排队和网络传输时间,客户端执行命令的时间会多于命令实际执行时间。
    • 慢查询日志实质上是一个先进先出的队列,如果慢查询比较多,可以定期执行slow get命令将慢查询日志持久化到其他存储中去。

    相关文章

      网友评论

          本文标题:redis慢查询

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