Redis深入之路(十六)

慢查询日志

慢查询日志功能用于记录执行时间超过给定时间的命令,帮助用户监视和优化查询速度。

// slowlogEntry 慢查询日志记录结构
typedef struct slowlogEntry {

    // 日志唯一标识符 ID
    long long id;

    // 命令执行的时间,UNIX 时间戳
    time_t time;    

    // 命令执行所消耗的时间,单位:微秒
    long long duration;

    // 命令参数
    robj **argv;

    // 命令参数数量
    int argc;

} slowlogEntry;


// redis服务器结构
struct redisServer {
    // ...

    // 下一条慢查询日志 ID,初始值 0,每当有新记录产生时,值递增 1
    long long slowlog_entry_id;

    // 所有慢查询日志的链表,保存的是 slowlogEntry 结构
    list *slowlog;

    // 服务器配置(redis.conf),慢查询日志时间
    long long slowlog_log_slower_than;

    // 服务器配置(redis.conf),慢查询日志保存记录数
    unsigned long slowlog_max_len;

    // ...
};

配置

slowlog-log-slower-than

定义:当命令执行的时间超过 slowlog-log-slower-than 指定的值,则此命令将被记录到慢查询日志中。
单位:微秒(一秒 = 1 000 000 微秒)。

slowlog-max-len

定义:最多保存的慢查询日志记录数。
实现:慢查询日志记录数等于 slowlog-max-len 时,服务器在添加一条新的慢查询日志时,先删除最旧的那条慢查询日志(日志队列,FIFO)。

slowlog get 命令

查看服务器所报存的慢查询日志。

重点

  • Redis 的慢查询日志功能用于记录执行的时间长度超过指定时间的命令。
  • Redis 将所有的慢查询日志保存在服务器结构 redisServer 的 slowlog 链表中,每个链表节点包含一个 slowlogEntry 结构,每个 slowlogEntry 结构代表一个慢查询日志。
  • 通过遍历 redisServer 结构的 slowlog 链表实现打印和删除日志功能。
  • 慢查询日志的数量等于服务器保存的 slowlog 链表的长度。
  • 新的慢查询日志会被添加到 slowlog 链表头,如果日志数量超过 slowlog-max-len,slowlog 链表尾的日志将被删除。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值