Redis(设计与实现):---慢查询日志(SLOWLOG命令、slowlog-log-slower-than选项、slowlog-max-len选项、struct slowlogEntry)

本文介绍了Redis的慢查询日志功能,包括slowlog-log-slower-than和slowlog-max-len选项,以及SLOWLOG GET、SLOWLOG RESET和SLOWLOG LEN命令的使用。通过示例解释了慢查询日志的记录、存储和溢出处理机制,深入探讨了struct slowlogEntry结构和slowlogPushEntryIfNeeded函数的工作原理。
摘要由CSDN通过智能技术生成

一、慢查询日志介绍

  • Redis的慢查询日志功能用于记录执行时间超过给定时长的命令请求,用户可以通过这个功能产生的日志来监视和优化查询速度

二、慢查询日志选项

slowlog-log-slower-than选项:指定执行时间超过多少微秒(1秒等于1000 000微秒)的命令请求会被记录到日志上

  • 举个例子,如果这个选项的值为100,那么执行时间超过100微秒的命令就会被记录到慢 查询日志
  • 如果这个选项的值为500,那么执行时间超过500微秒的命令就会被记录到慢查询日志

slowlog-max-len选项:指定服务器最多保存多少条慢查询日志。

三、慢查询日志的数量溢出

服务器使用先进先出的方式保存多条慢查询日志,当服务器存储的慢查询日志数量等于slowlog-max-len选项的值时,服务器在添加一条新的慢查询日志之前,会先将最旧的一条慢查询日志删除

举个例子,如果服务器slowlog-max-len的值为100,并且假设服务器已经储存了100条慢 查询日志,那么如果服务器打算添加一条新日志的话,它就必须先删除目前保存的最旧的那条日志,然后再添加新日志/

四、慢查询日志的格式

以下面的图片为例:

1)日志的唯一标识符
2)命令执行时的UNIX时间戳
3)命令执行的时常(单位微秒)
4)命令以及命令参数
5)命令执行的客户端IP与端口

在这里插入图片描述

五、SLOWLOG命令

  • SLOWLOG GET:用来查看服务器所保存的慢查询日志
  • SLOWLOG RESET:用于清空所有慢查询日志
  • SLOWLOG LEN:查询慢查询日志的数量

SLOWLOG GET演示案例

  • 首先使用CONFIGSET命令将服务器slowlog-log-slower-than选项设置为0,那么每条执行的命令都会被记录到慢查询日志

  • 然后再使用CONFIG SET命令将slowlog-max-len选项设置为5,那么服务器最多只能保存5条慢查询日志

在这里插入图片描述
接下来执行3条命令

在这里插入图片描述
记着查询慢查询日志,可以看到上面我们执行的5条命令

在这里插入图片描述

  • 接着我们再次执行一次,SLOWLOG GET命令,由于slowlog-max-len选项的值为5,所以我们执行的命令将从前旧的记录删除了

在这里插入图片描述

六、慢查询记录的保存(struct slowlogEntry)

redisServer结构

struct redisServer {
   
    // ...
    //下一条慢查询日志的ID
    long long slowlog_entry_id;
 
    //保存了所有慢查询日志的链表
    list *slowlog;
 
    //
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值