Redis版本为6.2
1.什么是Redis慢查询
Redis慢查询是Redis提供的一项性能优化功能,它可以记录某个查询语句的执行时间、命令参数、执行次数等信息,从而帮助运维人员快速定位某个查询语句的性能问题。
Redis慢查询的原理是基于Redis的事务机制实现的。Redis的事务机制可以保证多个操作要么全部执行,要么全部不执行,这样就避免了在操作过程中发生的一些竞态条件,提高了数据的一致性。
同时,事务机制也会开启一个事务日志记录每个操作的详细信息,这样就可以记录每个查询语句的执行时间和执行次数等信息,从而实现慢查询功能。
慢查询的作用主要有两个:
1️⃣:快速定位某个查询语句的性能问题,从而优化或者调整该查询语句,提高查询性能;
2️⃣:二是避免出现因为某个查询语句性能问题导致的服务不稳定或者雪崩效应。
总之,Redis慢查询是一项非常实用的性能优化功能,对于Redis的使用和维护都非常重要。
2.慢查询的相关配置参数
slowlog-log-slower-than 10000
这个参数的单位为微秒,因此设置为1000000(即100毫秒)意味着记录每个命令100毫秒内的活动。如果将这个值设置为负数,则会禁用慢日志功能;如果将其设置为0,则会强制记录每个命令。
即超过由该参数指定时间的查询会记录到日志中
slowlog-max-len 128
表示在慢查询日志里可以记录的日志条数,当慢查询日志的数量已经达到该参数、新的慢查询日志到达时,就会把最老的一条日志删除
3.慢查询实战
因为测试,所以数值调整较小,实际情况根据自身环境调整
- 修改
redis.conf
配置文件
slowlog-log-slower-than 1 slowlog-max-len 100
- 如果没修改配置文件也可以用命令修改(二选一即可)
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
config rewrite
意思是将上面两条配置写入配置文件
- 启动redis服务器
[root@localhost redis-6.2.12]# redis-server redis.conf [root@localhost redis-6.2.12]# ss -utpln | grep 6379 tcp LISTEN 0 511 127.0.0.1:6379 *:* users:(("redis-server",pid=1364,fd=6)) tcp LISTEN 0 511 [::1]:6379 [::]:* users:(("redis-server",pid=1364,fd=7))
- 配置好两个参数后,使用
slowlog get
命令观察慢查询
[root@localhost ~]# redis-cli 127.0.0.1:6379> set name003 beibei OK 127.0.0.1:6379> get name003 "beibei" 127.0.0.1:6379> SLOWLOG get 1) 1) (integer) 2 2) (integer) 1687316394 3) (integer) 12 4) 1) "get" 2) "name003" 5) "127.0.0.1:47312" 6) "" 2) 1) (integer) 1 2) (integer) 1687316389 3) (integer) 37 4) 1) "set" 2) "name003" 3) "beibei" 5) "127.0.0.1:47312" 6) "" 3) 1) (integer) 0 2) (integer) 1687316212 3) (integer) 1437 4) 1) "COMMAND" 5) "127.0.0.1:47312" 6) ""
以上内容即为慢查询的日志,我们拿出一段作为讲解:
1) 1) (integer) 2 2) (integer) 1687316394 3) (integer) 12 4) 1) "get" 2) "name003" 5) "127.0.0.1:47312" 6) ""
1️⃣:一行是慢查询日志ID
2️⃣:二行是该命令运行的时间戳
3️⃣:三行是该命令的运行时长
4️⃣5️⃣:四五行是返回的命令及对应的参数
6️⃣:六行是执行该命令客户端地址
7️⃣:七行是客户端名称,没有即为空
4.慢查询相关命令
slowlog get
返回所有慢查询日志
slowlog get n
获取指定第n条慢查询的日志
slowlog len
获取慢查询日志的长度
slowlog reset
清空慢查询日志