网站首页 > 博客文章 正文
管道技术:Redis的pipeline可以一次性发送多条命令给服务端处理,也就是批处理。
为什么需要pipeline呢
Redis本身是基于一个请求一个响应方式的同步请求,正常情况下,客户端发送一个命令,等待Redis服务器返回结果,如果同时需要执行大量的命令,需要频繁调用系统IO、发送网络请求,非常影响性能。pipeline 通过减少客户端与 redis 的通信次数来实现降低往返延时时间,提高执行效率。
数据包从客户端到达服务器,并从服务器返回数据回复客户端。 这个时间被称之为 RTT (Round Trip Time - 往返时间)
Pipeline与原生批量命令对比
- 原生批量命令是原子性(例如:mset, mget),pipeline是非原子性
- 原生批量命令一次只能执行一种命令,pipeline支持批量执行不同命令
- 原生批命令是服务端实现,而pipeline需要服务端与客户端共同完成
Pipeline与事务对比
- pipeline选择客户端缓冲,multi选择服务端缓冲
- 请求次数的不一致,multi需要每个命令都发送一次给服务端,pipeline最后一次性发送给服务端,请求次数相对于multi减少
pipeline与lua脚本对比
- 脚本可以实现类似pipeline一次I/O处理多个命令的场景,同时可以解决命令之间的依赖问题
- pipeline由于是发送批量请求,但是一次响应结果,所以在拿到响应结果之前无法判断操作是否成功,即发送的批量请求之间不支持相互依赖
- lua脚本同样是客户端一次请求,服务端执行多个命令,由于脚本可以支持判断,所以可以支持命令之间的相互依赖和逻辑处理
1、cluster并不支持pipeline操作
2、使用pipeline组装的命令个数不能太多
3、pipeline缓冲的指令只是会依次执行,但是不能保证原子性,如果执行中间某一个指令发生异常,将会继续执行后续的指令
猜你喜欢
- 2024-09-20 Pipeline+Jenkins流水线构建(jenkins工作流)
- 2024-09-20 用代码描述流水线-Jenkins Pipeline 详解
- 2024-09-20 「博文精选」Jenkins pipeline控制并行执行job个数
- 2024-09-20 微服务从代码到k8s部署应有尽有大结局(k8s部署)
- 2024-09-20 持续集成工具 Jenkins 的使用(jenkins持续集成自动化测试)
- 2024-09-20 测试开发丨从零开始,手把手教你在Jenkins中创建Pipeline Job!
- 2024-09-20 Jenkins Pipeline 部署 Kubernetes 应用
- 2024-09-20 Jenkins Pipeline 结合 Gitlab 实现 Node 项目自动构建
- 2024-09-20 别再用jenkins freestyle了,教你快速编写jenksinfile,离线调试
- 2024-09-20 Jenkins 持续集成企业实战示例(jenkins持续集成原理)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)