2 回答
TA贡献1829条经验 获得超13个赞
AHashMap
不是并发的。所以你不能更新它。AConcurrentHashMap
是。所以你想要那个。
Ehcache (on-heap) 是一个ConcurrentHashMap
带有过期和驱逐处理的。
它也符合 JSR107,因此可以更轻松地使用许多框架进行透明缓存。
但是如果你知道你的地图中有多少元素。而且您知道,除非您更换它们,否则它们永远不会过期,那么ConcurrentHashMap
您将满足您的需求。
最重要的是,Ehcache 是一个增强的ConcurrentHashMap
.
TA贡献1827条经验 获得超7个赞
使用 EhCache,因为它可以像 HashMap 一样工作,同时可以更改其配置。
虽然数据集很小,但将其完全加载到内存中(HashMap)可能是可行的,否则您必须决定要为其分配多少内存,并且必须保留一些用于其他用途。
这就是 EhCache 派上用场的地方:
可配置大小(在缓存条目中)
保留“最有用”的条目(取决于使用的算法)
可能会在磁盘上存储一些条目
支持 TTL (Time To Live), TTI (Idle), 磁盘也一样,基本上如果不使用条目,缓存不占用任何空间
支持聚类
适用于更大的应用程序
等等。
虽然 HashMap:
将所有内容保留在内存中
使用起来很简单
对于简单的程序还可以
有时缓存包含不是最新的数据(错误或在没有应用程序知识的情况下操作的数据库)。如果没有清理机制 HashMap 将保留该数据。EhCache 有机会(TTL、TTI)删除它并在必要时加载最新数据
添加回答
举报