Redis - 场景

118 阅读2分钟

这是我参与8月更文挑战的第31天,活动详情查看:8月更文挑战

慢查询

慢查询:系统在命令执行前后计算每条命令的执行时间,当超过预定阀值时,记录命令的发生时间,耗时,命令的详细信息等。

B0D0B53D49BF4F38A43EBA9331198128.jpg

说明 :

慢查询发生在第3阶段

客户端超时不一定是慢查询,但慢查询是客户端超时的一个可能因素

两个配置

slowlog-max-len 慢查询的队列长度队列长度

1.先进先出队列

2.固定长度

3.保存在内存中,不会持久化

showlog-log-slower-than 执行时间超过当前设置时间就会记录

1.慢查询阈值(单位:微妙)

2.slowlog-log-slower-than = 0 ,记录所有命令

3.slowlog-log-slower-than < 0 ,不记录任何命令

配置方法:

1.默认值

config get slowlog-max-len = 128

config get slowlog-log-slower-than = 10000 (10ms)

2.修改配置文件重启(不建议使用,因为可以使用动态配置)

3.动态配置

config set slowlog-max-len = 1000

config set slowlog-log-slower-than = 1000

三个命令

slowlog get [n] : 获取慢查询队列

showlog len : 获取慢查询队列长度

showlog reset : 清空慢查询队列

运维经验

1.slowlog-max-len 不要设置过小,通常设置1000左右

2.slowlog-log-slower-than 不要设置过大,默认10ms,通常设置1ms

3.理解声明周期

4.定期持久化慢查询

pipeline

一次网络命令通信模型

B459FDD774EF47768FD468739C619082.jpg

批量网络命令通信模型

224CC58191F44678A33D8D183B0B77DC.jpg

什么是流水线

1CBD85AB09D54FBDBA528EE24897051B.jpg

流水线的作用

命令N条命令操作1次pipeline(N个命令)
时间n次网络时间 + n次命令1次网络 + n次命令
数据量1条命令n条命令

两点注意:

1.Redis的命令时间是微妙级别。

2.pipeline每次条数要控制(网络)。

使用建议

1.注意每次pipeline携带数据量

2.pipeline每次只能作用在一个Redis节点上

3.M操作与pipeline的区别