9

我一直使用 java 单例类来满足我的基本缓存需求。
现在该项目正在使用 ehcache 并且没有深入研究源代码,我无法弄清楚单例模式有什么问题。

即使用ehcahce框架除了缓存可以通过xml配置和注解不用写样板代码(即静态HashMap)来完成之外还有什么好处

4

3 回答 3

6

这取决于您对缓存机制的需求。Ehcache 提供了很多很酷的功能,需要大量精心设计的代码手动完成:

  • LRU、LFU 和 FIFO 缓存驱逐策略
  • 灵活配置
  • 持久性
  • 复制
  • 还有很多 ...

我建议您在http://ehcache.org/about/features上查看它们,然后确定您的项目中是否真的需要一些东西。

于 2012-08-10T19:47:46.280 回答
2

最重要的一个:

溢出到磁盘的能力——这是你在普通的 HashMap 中没有的东西,写这样的东西绝非易事。EhCache 可以像配置键值数据库一样简单。

即使您不使用溢出到磁盘,也有一个大型样板文件可以用您自己的实现来编写。如果可以加载整个数据库,那么使用具有写入持久性和启动时恢复的内存数据库将是解决方案。但是内存是有限的,你必须从内存中删除元素。但是哪一个,基于什么?此外,您必须断言缓存元素不会太旧。旧的元素应该被替换。如果您需要从缓存中删除元素,则应从过时的元素开始。但是当用户请求某些东西时你应该这样做吗?它会减慢请求。还是开始自己的线程?

使用 EhCache,您可以在其中解决和测试所有这些问题的库。

于 2013-01-23T09:37:56.517 回答
1

还有一个 ehcache 的集群闭源版本,它允许您拥有分布式缓存。这可能是您可能要考虑使用 ehcache 的原因之一。

于 2012-08-15T18:06:49.617 回答