Redis 还是 Ehcache?

Redis or Ehcache?

哪个更适合以下环境:

  1. 坚持不是强迫。
  2. 多台服务器(使用 Ehcache 必须需要一些缓存同步)。
  3. 写入不频繁,读取频繁。
  4. 相对较小的数据库(非常少的内存需求)。

我会倾诉我目前的想法。这些我可能是错的。

我知道 Redis 需要一个单独的服务器(?),而 Ehcache 提供本地缓存,因此它必须更快,但会跨服务器复制缓存(?)。使用 Ehcache 可以在更新一个缓存后更新所有缓存。

我的问题是哪个更适合我提到的环境?
谁的表现会更好或者在什么情况下一个人可能会超越另一个人?

提前致谢。

你可以认为Redis是一个共享数据结构,而Ehcache是​​一个内存块存储序列化数据对象。这是主要区别。

Redis 作为一个共享数据结构意味着你可以把一些预定义数据结构(比如String, List, Set etc) 在一种语言中,并在另一种语言中检索它。如果您的项目是 多语言,这将很有用,例如:Java 后端,PHP 前端。您可以将 Redis 用于共享缓存。但是它只能存储预定义的数据结构,你不能插入任何你想要的Java对象。

如果您的项目只是 Java,即不是 多语言,Ehcache 是一个方便的解决方案。

您将遇到 EhCache 缩放问题,并且需要资源在故障转移等期间对其进行管理。 Redis 优于 EhCache 的

  1. 它使用久经考验的八卦协议进行节点发现和同步。
  2. AWS ElastiCache, Azure Redis Cache 等完全托管服务的可用性。此类服务提供 Redis 的完全自动化、支持和管理,因此开发人员可以专注于他们的应用程序,而不是维护他们的数据库。
  3. 更正大内存量处理(我们都知道Redis可以在单机上处理数百GB的RAM)。它没有像 Java.
  4. 这样的垃圾收集问题

最后 Java 开发人员友好的 Redis 客户端 - Redisson
Redisson 在 Redis 之上提供了许多 Java 友好对象 ,例如:

  • 设置
  • 并发映射
  • 列表
  • 队列
  • 双端队列
  • 阻塞队列
  • BlockingDeque
  • 读写锁
  • 信号量
  • 锁定
  • AtomicLong
  • CountDownLatch
  • 发布/订阅
  • 执行器服务
  • 还有更多...

Redisson 支持 本地缓存 的 Map 结构,它可以为您提供 45x 的读取操作性能提升。

这里the article描述了Ehcache和Redis的详细特性对比