Redis Java Client选型-Jedis Lettuce Redisson

目录

目标

选型

待选集合

对比列表

 确定选型

 client连接数对redis性能影响的角度

client分片的角度  

隔离redis具体使用的角度

 


目标

针对redis java client,从多角度进行选型对比,以便选择符合业务要求的redis client。

选型

待选集合

依据redis官网对client的标记进行选择。

推荐的client使用star标记。最近持续维护的client使用smile标记.

待选集合:Jedis,Lettuce,Redisson。

 

对比列表

  Jedis Lettuce Redisson
地址 https://github.com/xetorthio/jedis https://lettuce.io/ https://github.com/redisson/redisson
what 小且健全的redis java客户端,支持redis的所有特性和命令,如事务、管道、发布订阅。 线程安全的redis客户端,封装同步、异步、交互API。不执行阻塞和事务操作时,多线程可共享连接。 线程安全的redis客户端,支持多场景,提供基于redis的某些分布式服务解决方案
实现与使用 实现简单,使用简单 实现较复杂,使用简单 实现复杂,使用简单
网络 阻塞IO Netty Netty
redis命令特性支持 redis命令与特性提供健全的支持 redis命令与特性支持 redis命令和特性支持
抽象封装程度 没有做特别的抽象,特性使用是否正确依赖使用者。 同步、异步、交互场景封装 丰富的数据模型、分布式服务、特性的封装,第三方框架的扩展实现
操作的维度 指令维度的操作 指令维度的操作 使用对象、服务将redis指令和业务分离,对象维度的操作,使用更方便,没有使用指令灵活,支持redisClient执行指令;分布式服务特性缺乏管理平台。
redis连接 每次操作均需要从连接池中获取连接,线程间不可以共享连接,高并发时需要考虑连接过多对client和server的影响。 共享连接,连接是long-lived和线程安全的,而且自动重连 共享连接
client分片  支持,提供实现  不支持,未提供实现  不支持,针对特殊数据模型提供数据分片
read slave 未找到使用slave执行read指令的API,但可以自行实现 支持slave执行read指令 支持slave执行read指令
排他+超时  支持  支持 需要使用封装的数据模型
社区维护 社区维护好,版本更新快 社区维护一般,版本更新较慢 分为企业版和开源版,维护好,版本更新快
特性表 Sorting
Connection handling
Commands operating on any kind of values
Commands operating on string values
Commands operating on hashes
Commands operating on lists
Commands operating on sets
Commands operating on sorted sets
Transactions
Pipelining
Publish/Subscribe
Persistence control commands
Remote server control commands
Connection pooling
Sharding (MD5, MurmurHash)
Key-tags for sharding
Sharding with pipelining
Scripting with pipelining
Redis Cluster
synchronous, asynchronous and reactive usage
Redis Sentinel
Redis Cluster
SSL and Unix Domain Socket connections
Streaming API
CDI and Spring integration
Codecs (for UTF8/bit/JSON etc. representation of your data)
multiple Command Interfaces
各种封装的对象 服务 其他框架的扩展实现

 图示Redison的价值,来自redisson wiki

 Redis Java Client选型-Jedis Lettuce Redisson_第1张图片

 确定选型

 client连接数对redis性能影响的角度

连接数 QPS
100 12w
3w 6w
6w 5w

所以若每秒使用redis次数达数万,不建议用Jedis,因为不仅降低redis性能,而且降低client所在服务器的性能。

可选择Lettuce,Redisson。

client分片的角度  

 如果不使用redis cluster,而是采用client端分片,则选择Jedis。

隔离redis具体使用的角度

 Redisson,将redis指令与业务隔离,直接使用数据模型、特性封装、分布式服务,而不用关心使用哪些redis指令。

 

你可能感兴趣的:(redis,陈海龙的格物之路-Redis篇)