redis的慢查询日志及配置

amang2000
发布于 2022-4-30 19:38
浏览
0收藏

作者 | 川石信息
来源 | 今日头条

和很多关系型数据库(例如:MySQL)一样, Redis 也提供了慢查询日志记录,Redis 会把命令执行时间超过 slowlog-log-slower-than 的都记录在 Reids 内部的一个列表(list)中,该列表的长度最大为 slowlog-max-len 。需要注意的是,慢查询记录的只是命令的执行时间,不包括网络传输和排队时间

一、慢查询redis的慢查询日志及配置-鸿蒙开发者社区

在Redis中有两种修改配置的方法,一种是修改配置文件,另一种是使用config set命令动态修改。

例如下面使用config set命令将slowlog-log-slower-than设置为20000微秒,slowlog-max-len设置为1000

config set slowlog-log-slower-than 20000 
config set slowlog-max-len 1000 
config rewrite

获取慢查询日志

获取慢查询日志 
命令:slowlog get [n] 
IP:6379> slowlog get 
1) 1) (integer) 1 
    2) (integer) 1513709400 
    3) (integer) 11 
    4) 1) "slowlog" 
       2) "get" 
2) 1) (integer) 0 
   2) (integer) 1513709398   
   3) (integer) 4 
   4) 1) "config" 
      2) "set"  
      3) "slowlog-log-slower-than" 
      4) "2" 
1)表示日志唯一标识符uid 
2)命令执行时系统的时间戳 
3)命令执行的时长,以微妙来计算 
4)命令和命令的参数 
获取慢查询日志列表当前的长度 
命令:slowlog len 
IP:6379> slowlog len 
(integer) 2 
慢查询日志重置 
命令:slowlog reset 
实际是对慢查询日志列表做清理操作。 
127.0.0.1:6379> slowlog len 
(integer) 6 
127.0.0.1:6379> slowlog reset 
OK
127.0.0.1:6379> slowlog len
(integer) 1 
#为什么还有1个,因为阈值设的比较小,slowlog reset就属于慢查询。

redisServer结构

struct redisServer { 
    // ... 
    //下一条慢查询日志的ID 
    long long slowlog_entry_id; 
    //保存了所有慢查询日志的链表 
    list *slowlog; 
    //服务器配置slowlog-log-slower-than 选项的值
    long long slowlog_log_slower_than; 
    //服务器配置slowlog-max-len 选项的值 
    unsigned long slowlog_max_len; 
    // ... 
};

slowlogEntry结构

typedef struct slowlogEntry { 
   //唯一标识符 
   long long id; 
   //命令执行时的时间,格式为UNIX 时间戳 
   time_t time; 
   //执行命令消耗的时间,以微秒为单位 
   long long duration; 
   //命令与命令参数 
   robj **argv; 
   //命令与命令参数的数量 
   int argc; 
} slowlogEntry; 

二、配置文件

Redis客户端相关配置redis的慢查询日志及配置-鸿蒙开发者社区

Redis安全相关配置redis的慢查询日志及配置-鸿蒙开发者社区

Redis复制相关配置

 

redis的慢查询日志及配置-鸿蒙开发者社区

redis的慢查询日志及配置-鸿蒙开发者社区redis的慢查询日志及配置-鸿蒙开发者社区

 

收藏
回复
举报
回复
    相关推荐