5.5 慢查询实战分析
5.5.1 慢查询相关的配置参数
slowlog-log-slower-than
:单位为微秒.超过该参数指定时长的查询会记录到日志中slowlog-max-len
:在慢查询日志中可以记录的日志条数.当慢查询日志的数量已经到达该参数时,每有一条新的慢查询日志写入,就会有最老的一条日志被删除
例:设置慢查询的时长和慢查询日志的条数
127.0.0.1:6379> CONFIG SET slowlog-log-slower-than 1
OK
127.0.0.1:6379> CONFIG SET slowlog-max-len 100
OK
127.0.0.1:6379> CONFIG REWRITE
OK
此时配置文件内容如下:
# Generated by CONFIG REWRITE
slowlog-max-len 100
slowlog-log-slower-than 1
save 3600 1
save 300 100
save 60 10000
user default on nopass ~* &* +@all
dir "/redis-6.2.13"
5.5.2 用SLOWLOG GET
命令观察慢查询
SLOWLOG GET
命令观察慢查询SLOWLOG GET
:返回所有的慢查询日志
127.0.0.1:6379> SET name Peter
OK
127.0.0.1:6379> GET name
"Peter"
127.0.0.1:6379> SLOWLOG GET
1) 1) (integer) 4
2) (integer) 1692022815
3) (integer) 3
4) 1) "GET"
2) "name"
5) "127.0.0.1:57267"
6) ""
2) 1) (integer) 3
2) (integer) 1692022811
3) (integer) 18
4) 1) "SET"
2) "name"
3) "Peter"
5) "127.0.0.1:57267"
6) ""
3) 1) (integer) 2
2) (integer) 1692022564
3) (integer) 6865
4) 1) "CONFIG"
2) "REWRITE"
5) "127.0.0.1:57267"
6) ""
4) 1) (integer) 1
2) (integer) 1692022560
3) (integer) 5
4) 1) "CONFIG"
2) "SET"
3) "slowlog-max-len"
4) "100"
5) "127.0.0.1:57267"
6) ""
5) 1) (integer) 0
2) (integer) 1692022556
3) (integer) 13
4) 1) "CONFIG"
2) "SET"
3) "slowlog-log-slower-than"
4) "1"
5) "127.0.0.1:57267"
6) ""
我们以GET name
命令的慢查询日志为例:
1) (integer) 4
:表示慢查询日志ID2) (integer) 1692022815
:命令运行时的时间戳3) (integer) 3
:命令运行的时长.单位为微秒4) 1) "GET" 2) "name"
:一个数组.其中第一个元素是执行的命令,后续的元素是命令的参数5) "127.0.0.1:57267"
:客户端地址和端口6) ""
:客户端名称
5.5.3 慢查询相关命令
SLOWLOG GET n
:查看指定最新的n条慢查询日志
127.0.0.1:6379> SLOWLOG GET 1
1) 1) (integer) 5
2) (integer) 1692022854
3) (integer) 16
4) 1) "SLOWLOG"
2) "GET"
5) "127.0.0.1:57267"
6) ""
SLOWLOG LEN
:获取慢查询日志的长度
127.0.0.1:6379> SLOWLOG LEN
(integer) 9
SLOWLOG RESET
:清空慢查询日志
127.0.0.1:6379> SLOWLOG RESET
OK
127.0.0.1:6379> SLOWLOG LEN
(integer) 1
注:此处有1条慢查询日志是因为慢查询阈值设置的太低,导致SLOWLOG LEN
也成为了慢查询
Last updated