[英]When to use Ehcache and Hash map for caching data?
我有课程,其中定义了主要方法。 当我运行这个类时,它会从帐户表中加载帐户数据并在我的主类中填充一个全局变量。 现在我的项目中的要求是,可以在飞行中更新帐户表。 为了处理这个问题,我订阅了帐户表上最后更新的时间戳,并用它来检查哈希表中的数据是否是最新的。
建议在这里使用hashMap吗? 在我的主程序中使用ehcache或hashmap是不一样的。 两者都在我的JVM中占用相同的空间。 我试图了解何时在java程序中使用hashMap以及何时使用Ehcache
HashMap
不是并发的。 所以你无法更新它。 ConcurrentHashMap
是。 所以你想要那个。
Ehcache(on-heap)是一个ConcurrentHashMap
具有到期和驱逐处理功能。
它也符合JSR107标准,因此可以更轻松地使用许多框架进行透明缓存。
但是如果你知道你的地图中会有多少元素。 而且你知道它们永远不会过期,除非你替换它们,然后ConcurrentHashMap
会做你需要的。
最重要的是,Ehcache是一个增强的ConcurrentHashMap
。
使用EhCache,因为它可以像HashMap一样工作,同时可以更改它的配置。
虽然数据集很小,但将它完全加载到内存(HashMap)中可能是可行的,否则你必须决定要为它分配多少内存,而你必须保留一些其他内容。
这就是EhCache派上用场的地方:
而HashMap:
有时,缓存包含不是最新的数据(在没有应用程序知识的情况下操作bug或DB)。 如果没有清理机制,HashMap将保留该数据。 虽然EhCache有机会(TTL,TTI)删除它并在必要时加载最新数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.