一、又是划水的一天
最近正好也在写自定义协议的Java客户端,想看看开源软件客户端一般怎么写,尤其是通信层。
Redis 服务端是IO多路复用加事件驱动模型,事件处理是单线程。
想重点看看客户端如何写通信层代码,协议怎么封装。
市面上有三个 Redis Java 客户端:
-
Jedis 感觉是用的最广的,因为比较早吧。网络模型是连接池+长链接 (socket bio)
-
Luttuce 使用NIO + 单线程长链接 + 定时任务失败重连 (netty + nio),本来想看 Luttuce 源码,但是真的多,一个客户端竟然有10万的代码,和redis C的服务端一样多的代码。
-
Redission 通信层没有了解,但介绍也是netty + nio,但 redission 叫做数据网格,因为它在redis数据结构的接触上,在客户端配合Lua脚本做了丰富的数据结构,包括redis官方推荐的Java版本分布式锁的实现,还有其他JUC中的并发集合的分布式版本实现和MQ数据结构。
二、推荐文章
Luttuce www.throwable.club/2019/09/28/…
Redission官方文档就很强,目录就能看出来有丰富的数据结构 github.com/redisson/re…