Spring Boot 2.0中 Redis 客户端驱动现在由 Jedis变为了 Lettuce,这是随意的根据喜好的决定,还是有技术上的原因呢?
Lettuce 的确有很多优秀的特性,例如:
Jedis 是直连模式,在多个线程间共享一个 Jedis 实例时是线程不安全的,如果想要在多线程环境下使用 Jedis,需要使用连接池,每个线程都去拿自己的 Jedis 实例,当连接数量增多时,物理连接成本就较高了。
Lettuce 是基于 netty 的,连接实例可以在多个线程间共享,所以,一个多线程的应用可以使用一个连接实例,而不用担心并发线程的数量。
异步的方式可以让我们更好的利用系统资源,而不用浪费线程等待网络或磁盘I/O。
Lettuce 是基于 netty 的,netty 是一个多线程、事件驱动的 I/O 框架,所以 Lettuce 可以帮助我们充分利用异步的优势。
连接
使用阻塞的方式读取
设置阻塞读取时的超时时间
异步方式,当 RedisFuture<T>
是完成状态时自动触发后面的动作
对 Cluster 的支持包括:
Redis 中可能会有海量的数据,当你获取一个大的数据集合时,有可能会被撑爆,Lettuce 可以让我们使用流的方式来处理。
示例1
示例2
Lettuce 值得我们深入学习一下,官方文档
https://github.com/lettuce-io/lettuce-core/wiki