这是我参与8月更文挑战的第31天,活动详情查看:8月更文挑战
慢查询
慢查询:系统在命令执行前后计算每条命令的执行时间,当超过预定阀值时,记录命令的发生时间,耗时,命令的详细信息等。
说明 :
慢查询发生在第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
一次网络命令通信模型
批量网络命令通信模型
什么是流水线
流水线的作用
| 命令 | N条命令操作 | 1次pipeline(N个命令) |
|---|---|---|
| 时间 | n次网络时间 + n次命令 | 1次网络 + n次命令 |
| 数据量 | 1条命令 | n条命令 |
两点注意:
1.Redis的命令时间是微妙级别。
2.pipeline每次条数要控制(网络)。
使用建议
1.注意每次pipeline携带数据量
2.pipeline每次只能作用在一个Redis节点上
3.M操作与pipeline的区别