1. 问题
我们在数据库sql经常会统计并优化慢查询语句,同样的,redis中也存在一种慢查询;作用也是一样,列出
操作很慢的命令,这里的很慢是指超过某个指定的时间,用户可以自定义。
2. 使用
通过slowlog get来获取redis的慢查询日志
slowlog get 1
指定查询一条慢查询日志
3. 日志分析
慢查询日志分为id, 时间戳,执行时长,执行命令几个部分组成
分别对应上图的 id--> 7928
时间戳---》 1577603434
执行时长---》2090 ms
执行命令---》 zrangebyscore
4. redis慢查询日志底层结构
slowlog以链表的形式保存慢查询日志,底层数据结构如下:
typedef struct slowlogEntry { // 唯一标识符 long long id; // 命令执行时的时间,格式为 UNIX 时间戳 time_t time; // 执行命令消耗的时间,以微秒为单位 long long duration; // 命令与命令参数 robj **argv; // 命令与命令参数的数量 int argc; } slowlogEntry;
慢查询日志采用先进后出的方式,最新的慢查询日志始终插入链表的头部