首页 > 其他分享 >pipline

pipline

时间:2024-06-09 14:22:51浏览次数:15  
标签:Pipeline Redis 模式 发送 命令 pipline 客户端

当您有批量操作、提高命令执行性能等需求时,您可以使用Redis管道传输(Pipeline,后面称为Pipeline)机制。Pipeline可以将多个命令同时发给Redis服务端,减少网络延迟,并提高性能。

Pipeline简介

通常情况下,客户端与Redis通信时采用的是Ping-pong网络交互模式,Ping-pong模式是指客户端(Client)发送一个命令后会等待命令的执行结果,在客户端收到服务器端(Server)返回的结果后,再发送下一个命令,以此类推。

Redis也支持Pipeline模式,不同于Ping-pong模式,Pipeline模式类似流水线的工作模式:客户端发送一个命令后无需等待执行结果,会继续发送其他命令;在全部请求发送完毕后,客户端关闭请求,开始接收响应,收到执行结果后再与之前发送的命令按顺序进行一一匹配。在Pipeline模式的具体实现中,大部分Redis客户端采用批处理的方式,即一次发送多个命令,在接收完所有命令执行结果后再返回给上层业务。

下图为Ping-pong模式与Pipeline模式的网络通信示意图。

使用Pipeline可通过将多个命令打包到一起然后一次性发送给 Redis 服务器,降低网络往返时延(Round-trip time,简称RTT),减少read()write()的系统调用以及进程上下文切换次数,以提升程序的执行效率与性能。

Pipeline在某些场景下非常有效,例如有多个操作命令需要被迅速提交至服务器端,但用户并不依赖每个操作返回的响应结果,对结果响应也无需立即获得,那么Pipeline就可以用来作为优化性能的批处理工具。

重要

使用Pipeline时客户端将独占与服务器端的连接,此期间将不能进行其他“非Pipeline”类型操作,直至Pipeline被关闭;如果要同时执行其他操作,可以为Pipeline操作单独建立一个连接,将其与常规操作分开。

注意事项

  • Pipeline不能保证原子性。

    Pipeline模式只是将客户端发送命令的方式改为发送批量命令,而服务端在处理批量命令的数据流时,仍然是解析出多个单命令并按顺序执行,各个命令相互独立,即服务端仍有可能在该过程中执行其他客户端的命令。如需保证原子性,请使用事务或Lua脚本。

  • 若Pipeline执行过程中发生错误,不支持回滚。

    Pipeline没有事务的特性,如待执行命令的前后存在依赖关系,请勿使用Pipeline。

  • Pipeline 每批打包的命令不能过多,因为 Pipeline 方式打包命令再发送,那么 Redis 必须在处理完所有命令前先缓存起所有命令的处理结果。这样就有一个内存的消耗,可以将大量命令拆分为多个小的Pipeline命令完成。

标签:Pipeline,Redis,模式,发送,命令,pipline,客户端
From: https://www.cnblogs.com/zhengbiyu/p/18239533

相关文章

  • redis——集合,有序,慢查询, pipline与事务, bitmap ,HyperLogLog geo
    集合类型(set)saddkeyelement#向集合key添加element(如果element存在,添加失败)o(1)sremkeyelement#从集合中的element移除掉o(1)scardkey#计算集合大小sismemberkeyelement#判断element是否在集合中srandmemberkeycount#从集合中随机取出count个元素,不会破坏集......
  • jenkins学习19 - pipline 构建项目生成 allure报告并发送邮箱
    前言个人其实一直的不太喜欢用邮箱发送报告,测试报告用邮件通知这都是五六年前的事情了,但有部分小伙伴依然执着于发邮件报告通知。这里整理了下发邮箱通知的教程。配置你的邮箱配置邮箱这一步最繁琐,由于每个人使用的邮箱不一样,配置也是不一样的,没有固定的答案。这就导致很多人......
  • jenkins pipline 和 jenkinsfile
    JenkinsPipeline(或简称为"Pipeline")是一套插件,将持续交付的实现和实施集成到Jenkins中。JenkinsPipeline提供了一套可扩展的工具,用于将“简单到复杂”的交付流程实现为“持续交付即代码”。JenkinsPipeline的定义通常被写入到一个文本文件(称为Jenkinsfile)中,该文件可以被......
  • redis高级用法:慢查询、pipline与事务、发布订阅、bitmap位图、HyperLogLog、GEO地理位
    目录一高级用法之慢查询1.1生命周期1.2两个配置1.2.1slowlog-max-len1.2.2slowlog-max-len1.3设置慢查询1.5作用二pipline与事务2.1什么是pipeline(管道)2.2python客户端实现pipline2.3与原生操作对比2.4使用建议2.5原生redis操作操作事务三发布订阅3.1角色3.2模......
  • node前端的流水线pipline案例
    pipeline{agent{kubernetes{cloud'kubernetes-dev'slaveConnectTimeout1200workspaceVolumehostPathWorkspaceVolume(hostPath:"/opt/jenkins/workspace",readOnly:false)yaml'''apiVersi......
  • jdk后端的流水线pipline案例
    pipeline{agent{kubernetes{cloud'kubernetes-dev'slaveConnectTimeout1200workspaceVolumehostPathWorkspaceVolume(hostPath:"/opt/jenkins/workspace",readOnly:false)yaml'''apiVersi......
  • Jenkins-Pipline实现原理
    Jenkins-Pipline原理本文仅探讨jenkinspipline的原理,是流水线的一个demo版本实现,不能代表Jenkinspipline的具体实现,仅供参考。1.Jenkins流水线介绍Jenkinsfile流水线是JenkinsCI/CD工具中用来定义、构建和管理软件交付流程的一种声明式文件。它允许将整个软件交付流程......
  • redis 二、(哈希类型,列表类型,集合类型,有序集合,pipline机制,发布订阅,bitmap位图,HyperLogL
    目录Redis一、哈希类型二、列表类型三、集合类型四、有序集合五、慢查询六、pipline与事务七、发布订阅八、bitmap位图九、HyperLogLogRedis一、哈希类型###1---hget,hset,hdelhgetkeyfield#获取hashkey对应的field的value时间复杂度为o(1)hsetkeyfieldvalue#设......
  • jenkins学习笔记之四:jenkins常用pipline DSL方法
    一、Json数据格式化(readJSON)#建议使用defresponse=readJSONtext:"${scanResult}"println(scanResult)//以下为原生方法。不建议使用importgroovy.json.*......
  • jenkins pipline(script)
    二、脚本式Script特点:1.最外层有node{}包裹2.可直接使用groovy语句如何创建最基本的PIpeline直接在JenkinsWebUI网页界面中输入脚本通过创建一个jenkinsfile可以检入项目......