1.概述
首先从官方了解四个组件不同的定义。
1.1.Redis官方定义
Redis是一个开源的内存键值数据结构存储库,可以用于实现数据库、缓存和消息代理。Redis软件使用C语言编写,并支持字符串、列表、映射和集合等高级数据类型。许多开发者喜欢Redis的轻量级占用空间、良好的性能和高可用性。
1.2.Hazelcast官方定义
Hazelcast是一个用Java编程语言编写的开源内存数据网格平台,常用于实现缓存。Hazelcast的基本单元是节点和集群。集群中的每个节点负责管理部分数据。这种分布式系统使得I/O和处理更加高效。
1.3.Ignite官方定义
Distributed Database For High‑Performance Applications With In‑Memory Speed
一个支持水平扩展和容错的分布式内存计算平台,可以在TB级数据上以内存级的速度构建实时应用。
1.4.Ehcache官方定义
Ehcache is an open source, standards-based cache that boosts performance, offloads your database, and simplifies scalability. It's the most widely-used Java-based cache because it's robust, proven, full-featured, and integrates with other popular libraries and frameworks. Ehcache scales from in-process caching, all the way to mixed in-process/out-of-process deployments with terabyte-sized caches.
JAVA’S MOST WIDELY-USED CACHE
Ehcache诗一种广泛使用的开源Java分布式缓存组件。主要面向通用缓存、Java EE和轻量级容器。可以和大部分Java项目无缝整合。EhCache支持内存和磁盘存储,默认存储子内存中,如内存不足时把缓存数据同步到磁盘中。
2.特性对比
以Redis为基础,跟其他三个解决方案进行对比。
参考以下三个文档:
https://redisson.org/feature-comparison-redis-vs-hazelcast.html
https://redisson.org/feature-comparison-redis-vs-ignite.html
https://redisson.org/feature-comparison-redis-vs-ehcache.html
主要从支持特性进行对比。
2.1.分布式数据结构
如下表所示:
分布式集合 | Redis | EhCache | Ignite | Hazelcast |
---|
Map | 支持 | 支持 | 支持 | 支持 |
Multimap | 支持 | 不支持 | 不支持 | 支持 |
Set | 支持 | 不支持 | 支持 | 支持 |
List | 支持 | 不支持 | 支持 | 支持 |
Queue | 支持 | 不支持 | 支持 | 支持 |
Deque | 支持 | 不支持 | 不支持 | 不支持 |
SortedSet | 支持 | 不支持 | 不支持 | 不支持 |
ScoredSortedSet | 支持 | 不支持 | 不支持 | 不支持 |
PriorityQueue | 支持 | 不支持 | 不支持 | 不支持 |
PriorityDeque | 支持 | 不支持 | 不支持 | 不支持 |
DelayedQueue | 支持 | 不支持 | 不支持 | 不支持 |
TransferQueue | 支持 | 不支持 | 不支持 | 不支持 |
RingBuffer | 支持 | 不支持 | 不支持 | 支持 |
Stream | 支持 | 不支持 | 不支持 | 不支持 |
TimeSeries | 支持 | 不支持 | 不支持 | 不支持 |
2.2.分布式锁和同步器
如下表所示:
分布式锁和同步器 | Redis | EhCache | Ignite | Hazelcast |
---|
Lock | 支持 | 支持 | 支持 | 支持 |
Semaphore | 支持 | 不支持 | 支持 | 支持 |
CountDownLatch | 支持 | 不支持 | 支持 | 支持 |
FairLock | 支持 | 不支持 | 不支持 | 不支持 |
MultiLock | 支持 | 不支持 | 不支持 | 不支持 |
ReadWriteLock | 支持 | 支持 | 不支持 | 不支持 |
PermitExpirableSemaphore | 支持 | 不支持 | 不支持 | 不支持 |
2.3.分布式对象
如下表所示:
分布式对象 | Redis | EhCache | Ignite | Hazelcast |
---|
Object holder | 支持 | 不支持 | 支持 | 支持 |
AtomicLong | 支持 | 不支持 | 支持 | 支持 |
LongAdder | 支持 | 不支持 | 不支持 | 不支持 |
DoubleAdder | 支持 | 不支持 | 不支持 | 不支持 |
Publish/Subscribe | 支持 | 不支持 | 支持 | 支持 |
Reliable Publish/Subscribe | 支持 | 不支持 | 支持 | 支持 |
Id Generator | 支持 | 不支持 | 支持 | 支持 |
AtomicDouble | 支持 | 不支持 | 不支持 | 不支持 |
Geospatial | 支持 | 不支持 | 不支持 | 不支持 |
BitSet | 支持 | 不支持 | 不支持 | 不支持 |
BloomFilter | 支持 | 不支持 | 不支持 | 不支持 |
BinaryStream | 支持 | 不支持 | 不支持 | 不支持 |
HyperLogLog | 支持 | 不支持 | 不支持 | 支持 |
RateLimiter | 支持 | 不支持 | 不支持 | 不支持 |
2.4.高级缓存支持
如下表所示:
高级缓存支持 | Redis | EhCache | Ignite | Hazelcast |
---|
JCache API | 支持 | 支持 | 支持 | 支持 |
JCache API with near cache | 支持 | 不支持 | 不支持 | 支持 |
Near Cache | 支持 | 不支持 | 支持 | 支持 |
Read-through strategy support | 支持 | 支持 | 不支持 | 不支持 |
Write-through strategy support | 支持 | 支持 | 不支持 | 不支持 |
Write-behind strategy support | 支持 | 支持 | 不支持 | 不支持 |
2.5.API架构
如下表所示:
API架构 | Redis | EhCache | Ignite | Hazelcast |
---|
Asynchronous interface | 支持 | 不支持 | 部分支持 | 部分支持 |
Reactive stream interface | 支持 | 不支持 | 不支持 | 不支持 |
RxJava3 interface | 支持 | 不支持 | 不支持 | 不支持 |
2.6.事务
如下表所示:
事务相关 | Redis | EhCache | Ignite | Hazelcast |
---|
Transactions API | 支持 | 不支持 | 支持 | 支持 |
XA Transactions | 支持 | 不支持 | 不支持 | 支持 |
2.7.分布式服务
如下表所示:
分布式服务 | Redis | EhCache | Ignite | Hazelcast |
---|
ExecutorService | 支持 | 不支持 | 支持 | 支持 |
MapReduce | 支持 | 不支持 | 支持 | 支持 |
SchedulerService | 支持 | 不支持 | 支持 | 支持 |
RemoteService | 支持 | 不支持 | 不支持 | 不支持 |
LiveObjectService | 支持 | 不支持 | 不支持 | 不支持 |
2.8.框架支持度
如下表所示:
集成框架 | Redis | EhCache | Ignite | Hazelcast |
---|
Spring Cache | 支持 | 支持 | 支持 | 支持 |
Spring Cache with near cache (up to 45x faster) | 支持 | 不支持 | 不支持 | 不支持 |
Hibernate Cache | 支持 | 支持 | 支持 | 支持 |
Hibernate Cache with near cache (up to 5x faster) | 支持 | 不支持 | 不支持 | 不支持 |
MyBatis Cache | 支持 | 支持 | 不支持 | 支持 |
MyBatis Cache with near cache (up to 45x faster) | 支持 | 不支持 | 不支持 | 不支持 |
Tomcat Session Manager | 支持 | 支持 | 支持 | 支持 |
Spring Session | 支持 | 不支持 | 支持 | 支持 |
Statistics monitoring | 20多种不同的数据监控系统,包括JMX | 不支持 | 自己的监控工具 | JMX, NewRelic, AppDynamics |
2.9.安全
如下表所示:
安全相关 | Redis | EhCache | Ignite | Hazelcast |
---|
Authentication | 支持 | 不支持 | 不支持 | 支持 |
Authorization | 支持 | 不支持 | 不支持 | 支持 |
SSL support | 支持 | 不支持 | 支持 | 支持 |
2.10.自定义数据序列化
如下表所示:
自定义数据序列化方式 | Redis | EhCache | Ignite | Hazelcast |
---|
JSON codec | 支持 | 不支持 | 不支持 | 不支持 |
JDK Serialization | 支持 | 支持 | 不支持 | 不支持 |
Avro codec | 支持 | 不支持 | 不支持 | 不支持 |
Smile codec | 支持 | 不支持 | 不支持 | 不支持 |
CBOR codec | 支持 | 不支持 | 不支持 | 不支持 |
MsgPack codec | 支持 | 不支持 | 不支持 | 不支持 |
Kryo codec | 支持 | 不支持 | 不支持 | 不支持 |
FST codec | 支持 | 不支持 | 不支持 | 不支持 |
LZ4 compression codec | 支持 | 不支持 | 不支持 | 不支持 |
Snappy compression codec | 支持 | 不支持 | 不支持 | 不支持 |
2.11.稳定性和易用性
如下表所示:
稳定性和易于使用 | Redis | EhCache | Ignite | Hazelcast |
---|
全托管服务支持 | 支持 | 不支持 | 不支持 | 不支持 |
大内存处理 | 支持 | 开源版本有局限 | 支持 | 开源版本有局限 |