Spring ehcache vs Memcached?

sco*_*les 3 spring memcached ehcache spring-cache

我曾使用ehcache处理过弹簧问题.对我而言,暴露的不同API集及其实现也是如此.

除了API /实现之外,它们之间提供的功能有何不同?

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

Lou*_*met 6

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

这主要意味着使用Memcached,您始终需要对象的序列化版本,并始终与远程或非远程的不同进程进行交互.

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

当然这意味着对象会继续存在于Java堆中,从而增加内存压力.在Ehcache 3.x的情况下,您可以选择移动到更换内存等,允许在不影响JVM堆的情况下增加缓存.

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

而最终的决定权掌握在你手中.缓存消耗内存以提供减少的延迟.对你有用的东西可能与对别人有用的东西不同.你必须衡量和决定.

  • Memcached不是一个java程序.它是一个独立的服务器.所以它永远不会存储在堆上.是.Memcached有一个专有的API.但是你仍然需要找到你想要的语言的客户端.Ehcache在内存中,你直接拥有一个客户端(也用于与Terracotta集群交谈) (2认同)
  • Memcached 将存储在内存中,这是它自己进程的内存,因此不同于 Java 堆。 (2认同)