redis慢日志

慢日志是记录命令执行超过
配置时间的命令的功能
用于查询较慢的命令操作,
根据慢日志可以分析并确定一些
数据库的使用问题,
进而可以针对这些问题进行优化.

慢日志是内存数据,不参与持久化,重启数据库清空

相关配置

1
2
slowlog-log-slower-than 10000
slowlog-max-len 128

慢日志配置单位为微秒
1秒=1000000微秒
本身是双向链表结构
当数据超过长度限制后
会从头数据开始删除

查询慢日志的方法

客户端连接
发送查询命令即可
(慢日志不是写文件的日志,
是在内存内维护的一套数据结构)

命令

  • slowlog get [条数],没有参数则获取所有慢日志,添加条数则按由近到远的时间顺序
    显示最近几条的慢日志
  • slowlog len,显示当前公有多少条慢日志
  • slowlog reset,重置所有慢日志,清除记录

例子

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
127.0.0.1:9898> slowlog len
(integer) 3
127.0.0.1:9898> slowlog get 1
1) 1) (integer) 2
2) (integer) 1532317655
3) (integer) 1000648
4) 1) "SET"
2) "c"
3) "ccc"
127.0.0.1:9898> slowlog get
1) 1) (integer) 2
2) (integer) 1532317655
3) (integer) 1000648
4) 1) "SET"
2) "c"
3) "ccc"
2) 1) (integer) 1
2) (integer) 1532317654
3) (integer) 1001048
4) 1) "SET"
2) "b"
3) "bbb"
3) 1) (integer) 0
2) (integer) 1532317653
3) (integer) 1000425
4) 1) "SET"
2) "a"
3) "aaa"
127.0.0.1:9898> slowlog reset
OK
127.0.0.1:9898> slowlog len
(integer) 0

注:
字段说明:

  1. id
  2. 运行命令的时间戳(秒,unixtime)
  3. 执行命令时间,单位:微秒
  4. 执行的具体命令和参数信息

使用慢日志的思路

通过客户端,定时想数据库请求慢日志信息,
根据慢日志的id整理所有慢日志,
并将同类命令的整理在一起,
进而找到花费时间长的命令进行有针对的优化.