【问题标题】:Spring ehcache vs Memcached?Spring ehcache vs Memcached?
【发布时间】:2017-07-15 10:47:55
【问题描述】:

我一直在使用 ehcache 进行 spring cahin 工作。对我来说,这就像暴露的不同 API 集及其实现一样。

它们之间提供的功能有什么区别 除了 API/实现?

更新:-我已经看过Hibernate EHCache vs MemCache,但这个问题主要是从休眠的角度来看的,但我的问题一般是针对任何缓存服务的。对该问题的回答还表明在功能方面没有太大差异

【问题讨论】:

  • @neeraj 我在发布之前已经看到了这个问题。实际上,这个问题是从休眠的角度来看的。我的问题一般适用于任何缓存服务

标签: spring memcached ehcache spring-cache


【解决方案1】:

除了您提到的 API 差异之外,这里的主要区别在于 memcached 存在于不同的进程中,而 Ehcache 位于 JVM 内部 - 除非配置为存储在磁盘或集群中。

这主要意味着使用 Memcached,您总是需要对象的序列化版本,并且您总是与不同的进程交互,无论是否远程。

Ehcache 和其他基于 JVM 的缓存解决方案最初都是从基于堆上的缓存开始的,它允许查找只是处理对 Java 对象的引用。

当然,这意味着对象一直存在于 Java 堆中,从而增加了内存压力。在 Ehcache 3.x 的情况下,您可以选择移动到 offheap memory 等,允许在不影响 JVM 堆的情况下增长缓存。

此时,Memcached 的好处可能是您希望非 Java 客户端访问它。

最终决定权在您手中。缓存正在消耗内存以减少延迟。对你有用的东西可能与对其他人有用的东西不同。你必须衡量和决定。

【讨论】:

  • 当你说memcached lives in a different process 是强制性的吗?如果我想在与 webserver 相同的 jvm 进程中使用 with 怎么办?你还说Of course this means that the objects keep living in the Java heap, increasing memory pressure。我的观点是无论是 ehcache 还是 memcached,对象都将存储在堆中。唯一的区别是在 memcached 的情况下,堆将与单独的进程分离。不是吗?
  • At this point, the benefit of Memcached may be that you want non Java clients to access it 的最后一点,memcached 是否公开 web 服务以允许非 java 客户端访问该对象?
  • Memcached 不是 java 程序。它是一个独立的服务器。所以它永远不会存储在堆上。是的。 Memcached 有一个专有的 API。但是您仍然需要以您想要的语言找到客户。 Ehcache 在内存中,你直接有一个客户端(也用于与 Terracotta 集群通信)
  • @Henri So it will never store on heap 那么它将存储在哪里?它是内存数据存储吧?
  • Memcached 将存储在内存中,它自己的进程的内存,因此与 Java 堆不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-12
  • 1970-01-01
  • 1970-01-01
  • 2016-10-29
  • 2017-06-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多