改造JedisCluster使其支持pipeline操作

Redis 管道技术

Redis 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。

管道技术的优势

管道技术最显著的优势是提高了 redis 服务的性能。redis本身性能是很高的,单个redis命令的执行时间很短,大量的redis操作,网络IO的耗时非常大,而redis管道技术大大的减少了程序和redis的交互 次数,性能提升非常明显。

管道的使用----Jedis

public class PipelineTest {

    public static void main(String[] args){
        Jedis jedis = new Jedis("localhost",6060);
        Pipeline pipeline = jedis.pipelined();
        pipeline.set("xiajw","test");
        pipeline.set("hello","world");
        List<Object> result = pipeline.syncAndReturnAll();
        jedis.close();
    }
}

JedisCluster改造

在使用Jedis的时候,pipeline的使用非常简单。但是实际上,大家大部分情况会使用集群JedisCluster来进行操作,当我去JedisCluster类里面查找的时候发现,没有pipeline方法。JedisCluster本身是不支持管道操作的。

为什么不支持,以下仅代表个人观点。JedisCluster底层其实就是对Jedis的调用。redis集群中的每个主节点管理着各自的slot区间,而数据的存储,会计算key所在的slot,然后调用slot所在的redis实例去操作。JedisCluster本身如果支持管道的话,由于要分步调用不同的redis管道,redis本身对于事务的支持也基本没有,本身很难保证所有操作的一致性,因为是分批发送的,如果方法里提供,可能会让大家产生误解,以为它就是一致的,所以干脆不提供。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值