【发布时间】:2012-06-21 17:28:09
【问题描述】:
我目前在我的应用程序中使用ConcurrentHashMap,但我需要添加在超时期限后有效地使条目过期的功能(expireAfterWrite),并在删除条目时通知删除侦听器。
我看到CacheBuilder 可以提供我需要的东西,但我犹豫要不要使用它,因为我需要的是地图,而不是缓存。我这么说(地图和缓存之间的区别)是因为番石榴缓存文档这么说
一般来说,Guava 缓存实用程序适用于:
- 您愿意花费一些内存来提高速度。
- 您希望键有时会被多次查询。
- 原则上,如果每个值都立即从缓存中逐出,您的应用程序将正常工作 - 但您正试图减少 重复工作。
特别是第三个要点在我的应用程序中不合适。我将值存储在我想稍后检索的地图/缓存中(直到它到期)。此外,我的密钥通常只被查询一两次,而不是很多次才能看到缓存的好处。所以你看我的要求是地图,而不是某种意义上的缓存。使用 CacheBuilder 作为映射来存储将 expireAfterWrite 并提供removingListener 功能的值仍然是一个好主意吗?有人对 CacheBuilder 实现的内部知识足够了解以提供建议吗?
【问题讨论】:
-
我刚刚从 wiki 文章中删除了违规行;我原来写的。是的,这是
CacheBuilder的有效申请。