当前位置: 首页 > news >正文

Redis管道

目录

1、什么是管道?

2、案例演示

3、注意事项

4、面试题


1、什么是管道?

管道(pipeline)可以一次性发送多条命令给服务端,服务端依次处理完,通过一条响应一次性将结果返回,减少 IO 的次数,缩短往返回时间。

类似于 mset、mget 命令...

2、案例演示

# 创建一个文本文件,保存即将执行的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> 

3、注意事项

pipeline 与原生批量命令的对比

  1. 原生批量命令(mset、mget..)是原子性,而 pipeline 是非原子性操作
  2. 原生批量命令一次只能操作一种类型的数据,而 pipeline 可以操作多种
  3. 原生批量命令是由服务端完成,pipeline 是客户端+服务端共同完成 

使用pipeline 注意事项:

  1.   pipeline 缓冲的指令不保证原子性,如果执行指令发生异常,将会继续执行后序的指令
  2. 使用 pipeline 组装的命令个数不能太多,不然数据量过大客户端阻塞的时间可能过久,同时服务器此时也被迫回复一个队列答复,占用很多内存。

4、面试题

为什么要使用  pipleline,他有什么好处?

使用 pipeline(管道)的好处在于可以将多次 I/O 往返的时间缩短为一次,但是要求管道中执行的指令间没有因果关系。
pipeline 的原因在于可以实现请求/响应服务器的功能,当客户端尚未读取旧响应时,它也可以
处理新的请求。如果客户端存在多个命令发送到服务器时,那么客户端无需等待服务端的每次响应
才能执行下个命令,只需最后一步从服务端读取回复即可。
http://www.lryc.cn/news/35430.html

相关文章:

  • conda的共用package[硬链接]@pytorch和tensorflow装在同一个环境里好不好?
  • 「Vue面试题」动态给vue的data添加一个新的属性时会发生什么?怎样去解决的?
  • Flutter-Scaffold组件
  • Postman简介及接口测试流程(小菜鸟攻略)
  • kubebuilder注释
  • java日志
  • 研发中台拆分过程的一些心得总结
  • HTTP介绍
  • 10 卷积神经网络及python实现
  • 【立体匹配论文阅读】AANet: Adaptive Aggregation Network for Efficient Stereo Matching
  • 服务器防入侵攻击,安全加固措施
  • 解读:“出境标准合同”与“出境安全评估”要点与异同
  • python带你成功复刻热门手机游戏——飞翔的小鸟
  • YOLOv8初体验:检测、跟踪、模型部署
  • Vue 监听(watch handler)
  • 前端代码质量-圈复杂度原理和实践
  • 汽车微控制器芯片F280039CPZRQ1、F280039CSPM、F280039CSPN规格参数
  • 禾观科技三面经历
  • Spring Boot 实现接口幂等性的 4 种方案
  • Android Studio开发APP
  • Spring之实例化Bean _ @Resource和@Autowired实现原理(3)
  • 华为HCIE学习之Openstack Cinder组件(cinder对接glusterfs)
  • 关于Go语言的底层,你想知道的都在这里!
  • 每日一问-ChapGPT-20230308-关于技术与思考的问题
  • Oracle表分区的创建、新增、拆分
  • 如何快速升级Java 8 到Java11
  • 内卷把同事逼成了“扫地僧”,把Git上所有面试题整理成足足24W字Java八股文
  • 【计组】主存储器有关知识梳理
  • QT对象树
  • 什么是B+树