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  | 
|---|
全托管服务支持  | 支持  | 不支持  | 不支持  | 不支持  | 
大内存处理  | 支持  | 开源版本有局限  | 支持  | 开源版本有局限  |