实现客户端pineline的思路

背景:

redis集群不支持客户端的mget操作,但是业务上对这个redis集群的批量操作的需求一直都在,所以有各种客户端实现了各式各样的pineline实现,本文就记录下我们公司的实现方式

pineline实现思路

1.pineline要快

pineline之所以快是因为可以使用并行,而之前只能是串行的方式,如下图所示:
在这里插入图片描述

对应pineline伪代码实现:

for(key : keys){

     1. jedis = 获取key所在的slot对应的redis实例的连接

     2.jedis.send(命令),只发送,不接收结果,返回Feture<key>

}

for(Feture<key>: futures){

    1.feture.get获取结果

}

最终的就能达到并行的目的,大大节省了操作耗时

2.pineline遇到redis集群扩容时要有兜底

pineline虽然使用并行的方式会比较快,但是这样有一个问题,如果某个key在获取的过程中发生重定向异常怎么办?我们应该有兜底的策略,最简单的兜底策略就是回退到单个key一个个串行获取的方式,虽然性能收到影响,但是至少数据能正确获取到,示意图参见
在这里插入图片描述

对应pineline兜底伪代码实现:

try{

}catch(重定向异常){

for(key : keys){

     1. jedis = 获取key所在的slot对应的redis实例的连接

     2.jedis.send(命令),wait等待获取结果jedis.getResult()

}}

直接通过串行的单个请求响应的方式获取这一批key的返回值即可

总结:

实现redis集群客户端的pineline操作需要考虑到要快并且能在redis集群扩容的情况下进行兜底

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会尽力回答您关于 Jenkins 流水线(Pipeline)的问题。 1. 什么是 Jenkins Pipeline? Jenkins Pipeline 是一种插件,它允许用户使用 Groovy 脚本来定义整个构建过程。Pipeline 可以将整个构建过程划分为多个阶段(Stage),并且可以在每个阶段中执行多个步骤(Step)。Pipeline 还可以将构建过程与版本控制系统集成,以实现更好的可视化和持续交付。 2. 如何创建一个 Jenkins Pipeline? 首先,您需要安装 Pipeline 插件。然后,在 Jenkins 界面中,选择“新建任务”,然后选择“流水线”类型。接下来,您需要编写 Pipeline 脚本,该脚本将定义整个构建过程。一般来说,您可以将脚本存储在源代码控制系统中,并在 Jenkins 中指定该脚本的位置。 3. Jenkins Pipeline 的优势是什么? Pipeline 可以将整个构建过程可视化,并允许用户以更可读的方式管理构建。Pipeline 还可以将构建过程与版本控制系统集成,提高了代码的可追溯性和可维护性。Pipeline 还可以支持并行构建,从而提高了构建效率。 4. 如何调试 Jenkins Pipeline? 您可以使用 Jenkins Blue Ocean 插件来可视化 Pipeline 的执行过程。Blue Ocean 提供了一个交互式界面,允许您查看 Pipeline 的整个执行过程,并对执行过程进行调试。您还可以使用 Jenkins 的日志功能来查看 Pipeline 的详细输出信息,以便更好地了解 Pipeline 的执行过程。 希望这些信息对您有所帮助。如果您有任何其他问题,请随时告诉我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值