Redis下一小节:4-4 发布订阅
Redis瑞士军刀之-pipeline
pipeline介绍:
- 什么是流水线
- 与原生M操作对比
- 客户端实现
- 使用建议
1、什么是流水线
(1)1次网络命令通信模型
(2)批量网络命令通信模型
(3)什么是流水线?
2、流水线的作用
注意
- Redis命令执行时间是微妙级别的
- pipeline每次批量命令条数需要控制(注意网络传输)
3、与原生M操作对比
mset、mget、hmset、hmget等都是原子操作:
pipeline命令是非原子操作,但是命令返回顺序能够保证:
4、客户端实现
(1)maven引入redis包
(2)没有使用pipeline执行1w个命令
(3)使用pipeline执行1w个命令
5、使用建议
(1)注意每次pipeline携带的数据量
如果pipeline每次携带的数据量过大,会造成网络传输时间过长,进而导致网络超时。
(2)pipeline每次只能作用在一个Redis节点上
因为pipeline每次只能作用在一个Redis节点上,所以需要考虑每个Redis节点能承受的压力。
(3)M命令操作与pipeline的区别
mset、mget、hmget、hmset等命令是原子操作;
pipeline操作非原子操作,但能保证命令执行顺序;
mset、mget、hmget、hmset等命令是:n次网络时间+n次命令时间;
pipeline操作命令是:1次网络时间+n次命令时间