[Redis 客户端整合] Java 中常用Redis客户端比较
一、简介
Redis常用客户端主要有三个:
- Jedis api
- redisson
- redisson 官网地址 : https://redisson.org/
- redisson github地址 : https://github.com/redisson/redisson
- lettuce
- lettuce 官网地址 : https://lettuce.io/
- lettuce github地址 : https://github.com/lettuce-io/lettuce-core
在Spring boot2之后, 对redis连接的支持, 默认就采用了lettuce
二、概念
- Jedis : 是老牌的Redis的Java实现客户端, 提供了比较全面的Redis命令的支持
- redisson : 实现了分布式和可扩展的Java数据结构
- Lettuce : 高级Redis客户端, 用于线程安全同步, 异步和响应使用, 支持集群, sentinel, 管道和编码器
三、优点
- Jedis : 比较全面的提供了Redis的操作特性
- Redisson : 促使使用者对Redis的关注分离, 提供很多分布式相关操作事务, 例如: 分布式锁, 分布式集合, 可通过Redis支持延迟队列
- Lettuce : 基于Netty框架的事件驱动的通信层, 其方法调用是异步的。Lettuce的API是线程安全的, 所以可以操作单个Lettuce连接来完成各种操作
四、可伸缩
- Jedis : 使用阻塞的I/O, 并且方法调用都是同步的, 程序流需要等到sockets处理完I/O才能执行, 不支持异步。Jedis客户端实例不是线程安全的, 所以需要通过连接池来使用Jedis
- Redisson : 基于Netty框架的事件驱动的通信层, 其方法调用是异步的。Redisson的API是线程安全的, 所以可以操作单个Redisson连接来完成各种操作
- Lettuce : 基于Netty框架的事件驱动的通信层, 其方法调用是异步的。Lettuce的API是线程安全的, 所以可以操作单个Lettuce连接来完成各种操作。Lettuce能够支持redis4, 需要java8及以上。Lettuce是基于Netty实现的与Redis进行同步和异步操作
五、比较
-
Jedis :直接连接Redis Server, 非线程安全, 需使用连接池为每个Jedis实例增加物理连接
-
Redisson : 基于Netty连接Redis Server, 线程安全, 功能较为简单, 不支持字符串操作, 不支持排序、事务、管道、分区等Redis特性。促使使用者对Redis的关注分离,提供很多分布式相关操作事务
-
Lettuce : 基于Netty连接Redis Server, 线程安全, 一个连接实例可以满足多线程环境下的并发访问, 一个连接实例不够的情况下, 可以按需增加连接实例
六、总结
优先使用Lettuce, 如果需要分布式锁, 分布式集合等分布式的高级特性, 添加Redisson结合使用, 因为Redisson对字符串操作的支持很差
合集:
Redis 学习笔记
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!