JAVA实现的异步redis客户端

博主分享了自己花费5天时间实现的一个基于JAVA的异步Redis客户端,该客户端支持异步调用、单连接断线重连、底层Pipeline优化,并且在shard模式下也支持Pipeline。通过实测,在特定环境下每秒可执行的get和set操作达到130000次以上。目前仅实现了部分命令,计划优先完善用户自定义分片键功能以优化pipeline使用,接着继续添加更多Redis命令。源码已开源在GitHub。
摘要由CSDN通过智能技术生成

再使用redis的过程中,发现使用缓存虽然好,但是有些地方还是比较难权衡,缓存对象大了,存储对象时的序列化工作很繁重,消耗大量cpu;那么切分成很小的部分吧,存取的次数变多了,redis客户端的交互次数上不去,这是一个矛盾。要是有一个客户端能支持更多的交互次数,那么在完成既定指标的前提下,岂不是可以让我们的建模工作变的更宽松一些?


于是参照redis协议,花了5天时间,做了一个具备基本功能的redis客户端。它的特性:

1.支持异步调用,在getA之后不用等结果,能继续getB,getC,等等。等要做的redis操作都做完了,再来检查结果。

2.单连接,支持断线重连。客户端和任意一个redis服务器只建立一个连接。因为是异步调用,没必要建立更多连接。

3.底层支持pipeline,无论是异步调用,还是阻塞调用,底层使用的都有概率使用到pipeline。对pipeline的支持是在通信层做的,所以无论哪种调用都是隐性的使用pipeline。但是,连续的异步操作,本线程内的操作就有可能使用pipeline。而同步调用,则一般是线程之间的操作使用pipeline。更重要的是,这一切都是在底层完成的,我们在调用redis api的时候根本不用管这些,只管调用即可。只不过是建议采用连续的异步操作,因为这样效率最高。

4.支持shard模式。采用一致性算法的分片。

5.shard模式下仍然支持pipeline。因为对pipeline的支持是做在通信层的,所以,在任何模式下都支持pipeline。


最后看一下࿰

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值