Redis最流行的两个Java客户端库是Redisson和Jedis。Redisson提供内存中的数据网格功能,支持Redis的各种分布式对象和服务。另一方面,Jedis是一个更轻量级的产品,它缺乏其他库的某些功能。
如果你正在为Redis寻找一个Java客户端库,你可能会想Redisson和Jedis的优缺点。在本文中,我们将比较和对比Redisson和Jedis提供的不同功能。
Redisson | ||
Map | √ | plain commands only |
Multimap | √ | × |
Set | √ | plain commands only |
List | √ | plain commands only |
Queue | √ | plain commands only |
Deque | √ | plain commands only |
SortedSet | √ | × |
ScoredSortedSet | √ | plain commands only |
PriorityQueue | √ | × |
PriorityDeque | √ | × |
DelayedQueue | √ | × |
Stream | √ | plain commands only |
RingBuffer | √ | × |
TransferQueue | √ | × |
TimeSeries | √ | × |
Redisson实现了许多不同的Java对象,包括分布式集合。这些Redisson对象帮助Java程序员使用他们在Java中习惯的许多熟悉的数据结构。
Redisson中的分布式集合列表包括:
另一方面,Jedis对Redis中分布式集合的支持要少得多。
只有Jedis中的普通命令才支持以下对象:
Redisson | Jedis | |
Lock | √ | × |
Semaphore | √ | × |
CountDownLatch | √ | × |
FairLock | √ | × |
MultiLock | √ | × |
ReadWriteLock | √ | × |
当处理分布式系统时,锁和同步的问题变得更加复杂,因为不同的客户端位于不同的机器上。
幸运的是,Redisson支持一些常见的Java锁和同步器用于分布式计算,例如:
然而,Jedis在Redis中不支持任何这些锁和同步器。这意味着您必须自己处理这个问题,从而使开发过程更加复杂。
Redisson | Jedis | |
Object holder | √ | plain commands only |
AtomicLong | √ | plain commands only |
LongAdder | √ | × |
DoubleAdder | √ | × |
Publish/Subscribe | √ | plain commands only |
Reliable Publish/Subscribe | √ | × |
Id Generator | √ | × |
AtomicDouble | √ | plain commands only |
Geospatial | √ | plain commands only |
BitSet | √ | plain commands only |
BloomFilter | √ | × |
BinaryStream | √ | × |
HyperLogLog | √ | plain commands only |
RateLimiter | √ | × |
除了分布式集合、锁和同步器,Redisson还在Java中为Redis实现了各种其他分布式对象:
在上面的分布式对象中,Jedis根本不支持BloomFilter或BinaryStream对象。仅通过普通命令支持列表中的其他对象。
Redisson | Jedis | |
JCache API | √ | × |
JCache API with near cache | √ | × |
Near Cache | √ | × |
Read-through strategy support | √ | × |
Write-through strategy support | √ | × |
Write-behind strategy support | √ | × |
只有Redisson具有各种高级缓存功能。例如,Redisson支持三种不同的缓存策略:读通、写通和写后。Redisson还有一个JCache API和一个近缓存,用于保存从远程缓存中提取的对象的本地副本。然而,Jedis没有开箱即用地支持上述任何功能。
Redisson | Jedis | |
Transactions API | √ | × |
Redisson | Jedis | |
Instance thread-safety | √ | × |
Asynchronous interface | √ | × |
Reactive stream interface | √ | × |
RxJava3 interface | √ | × |
Redisson包括对实例线程安全、异步接口、Reactive Streams API和RxJava3 API的支持。然而,杰迪斯完全缺乏这种支持。
Redisson | Jedis | |
ExecutorService | √ | × |
MapReduce | √ | × |
SchedulerService | √ | × |
RemoteService | √ | × |
LiveObjectService | √ | × |
Redisson支持Java中的各种分布式服务:
不幸的是,Jedis不支持这些分布式服务。
Redisson | Jedis | |
Spring Cache | √ | × |
Spring Cache with near cache | √ | × |
Hibernate Cache | √ | × |
Hibernate Cache with near cache | √ | × |
MyBatis Cache | √ | × |
MyBatis Cache with near cache | √ | × |
Tomcat Session Manager | √ | × |
Spring Session | √ | × |
Jedis包括对SpringSession和SpringCache框架的支持。除了这两个框架之外,Redisson还支持Hibernate Cache和Tomcat会话管理器。
Redisson | Jedis | |
Authentication | √ | × |
SSL support | √ | × |
好消息是,Jedis和Redisson都包含关键的安全功能,如身份验证和SSL支持。
| Jedis | |
JSON codec | √ | × |
JDK Serialization | √ | × |
Avro codec | √ | × |
Smile codec | √ | × |
CBOR codec | √ | × |
× | ||
MsgPack codec | √ | × |
Kryo codec | √ | × |
FST codec | √ | × |
LZ4 compression codec | √ | × |
Snappy compression codec | √ | × |
Redisson支持Java序列化API,以及各种编解码器:
不幸的是,Jedis不支持JDK序列化或上述任何编解码器。