一、慢查询
-
简介redis
- 慢查询顾名思义是将redis执行命令较慢的命令记录下来,redis处理慢查询时是将慢查询记录到慢查询队列中
-
慢查询配置ruby
- slowlog-max-len 慢查询队列长度(记录多少条慢查询,默认128)
-
slowlog-log-slower-than 慢查询阀值(单位:微秒,默认10000)微信
- slowlog-log-slower-than=0, 记录全部命令
- slowlog-log-slower-than<0, 不记录任何命令
- 查看当前配置
127.0.0.1:6379> config get slowlog* 1) "slowlog-log-slower-than" 2) "10000" 3) "slowlog-max-len" 4) "128"
-
动态配置(还能够修改配置文件重启,但不建议,特别是没作持久化的redis)网络
- config set slowlog-max-len 100
- config set slowlog-log-slower-than 1000
-
慢查询命令并发
- slowlog get [n] : 获取慢查询队列
- slowlog len : 获取慢查询队列长度
- slowlog reset : 清空慢查询队列
二、Pipeline(流水线)
-
简介高并发
- redis执行一条命令有四个过程:发送命令、命令排队、命令执行、返回结果;整个过程是一个往返时间(RTT)。若是有n条命令,就会消耗n次RTT。Redis的客户端和服务端可能部署在不一样的机器上。在两地的数据传输受网络速度的影响,消耗n次的RTT会增长网络成本,这个和Redis的高并发高吞吐特性背道而驰。Pipeline(流水线)机制能改善上面这类问题,它能将一组Redis命令进行组装,经过一次RTT传输给Redis,再将这组Redis命令的执行结果按顺序返回给客户端。这样就只要一次的往返时间。
-
做用spa
- 为了解决批量处理而消耗的大量网络传输时间(由于redis执行是微妙级,大量操做更多消耗的是网络时间)
- 对比单次操做
命令 |
时间 |
数据量 |
特性 |
n个命令 |
n次网络 + n次执行 |
1条命令 |
原子性 |
1次pipeline(n个命令) |
1次网络 + n次执行 |
n条命令 |
非原子性 |
PS: 更多文章请关注微信公众号:浮话code