目录
1、什么是管道?
2、案例演示
3、注意事项
4、面试题
管道(pipeline)可以一次性发送多条命令给服务端,服务端依次处理完,通过一条响应一次性将结果返回,减少 IO 的次数,缩短往返回时间。
类似于 mset、mget 命令...
# 创建一个文本文件,保存即将执行的redis命令
[root@localhost ~]# cat pipe.txt
set kk vv
set kkk vvv
rpush list 1 2 3 4
hset user age 11
hset user name 'lisi'
zadd set 1 2 3 4# 使用管道符,将上述的redis命令交给客户端执行
[root@localhost ~]# cat pipe.txt | redis-cli --pipe
All data transferred. Waiting for the last reply...
Last reply received from server.
# 错误:0 回复:6 表示命令执行成功
errors: 0, replies: 6
[root@localhost ~]#
执行结果:
# 执行前
127.0.0.1:6379> keys *# 执行后
127.0.0.1:6379> keys *
set
kkk
kk
list
user
127.0.0.1:6379>
pipeline 与原生批量命令的对比:
使用pipeline 注意事项:
使用 pipeline(管道)的好处在于可以将多次 I/O 往返的时间缩短为一次,但是要求管道中执行的指令间没有因果关系。 用 pipeline 的原因在于可以实现请求/响应服务器的功能,当客户端尚未读取旧响应时,它也可以 处理新的请求。如果客户端存在多个命令发送到服务器时,那么客户端无需等待服务端的每次响应 才能执行下个命令,只需最后一步从服务端读取回复即可。为什么要使用 pipleline,他有什么好处?