java - 更新对象缓存 HashMap 的最佳实践

标签 java caching hashmap volatile concurrenthashmap

我正在使用 Jersey 开发一个 RESTful Web 服务,并且我将使用一个简单的对象缓存,该缓存通过基于计时器从数据库中检索记录来更新其数据。我计划使用 HashMap 将检索到的数据存储在此缓存中,但我的问题是更新此 HashMap 的最佳实践是什么。

现在我的选择是使 HashMap 不稳定,并且每当有更新时,创建一个新的 HashMap,然后在完成时分配它。我还可以将 HashMap 包装在同步块(synchronized block)中,或者在直接更新 HashMap 变量时使用 ReentrantReadWriteLock。我也考虑过使用 ConcurrentHashMap ,它似乎有一些性能优势。使用其中一种方法与另一种方法相比是否存在显着的性能差异和/或缺点?

此外,当用户通过我的 Web 服务 API 更新或插入记录时,最佳实践是在我将记录保存到数据库后直接更新本地缓存还是强制缓存执行另一次大数据检索?

最佳答案

考虑使用 Guava' 而不是 HashMap s 缓存,它的可配置性更高,并且记录了您缓存数据的意图。阅读 this示例。

关于java - 更新对象缓存 HashMap 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20272090/

相关文章:

java - Exoplayer - 在 fragment 内旋转时保存和恢复状态

java - 使用opencv配合java可以同时打开多个摄像头吗?

java - HashMap 中的值被新值覆盖 (Java)

java - LinkedHashMap 的缺点?

java - 为什么你需要知道抽象类的方法是否是抽象的

点击 jsp 时出现 java.lang.NoClassDefFoundError

haskell 缓存

java - 使用自己的 int 容量是否比使用数组的 .length 字段更快?

caching - Grails缓存重新启动

java - 按值集的大小对 HashMap 进行排序