Redis、Hazelcast、Ignite、Ehcache特性对比


发布于 2024-09-04 / 71 阅读 / 0 评论 /
Redis、Hazelcast、Ignite、Ehcache都是内存数据库,可作为缓存实现方案。

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

全托管服务支持

支持

不支持

不支持

不支持

大内存处理

支持

开源版本有局限

支持

开源版本有局限