0

HashMap在我的应用程序中,我以key-value从数据库中获取缓存的形式构建缓存。
现在我必须在这个缓存中添加一些东西,这里我正在做的是更新或将这个新值插入数据库并刷新缓存,以便它应该由更新的数据库填充。
现在我正在做的是 -
1. 我正在使用两个Mapscache1所以cache2当一个缓存正在使用时,另一个将是一个空缓存
2.当我想刷新缓存时,我开始填充空缓存,当它完成时我清除较早的缓存。
3.所有数据都将由这个新的缓存给出。
我只想知道我的方法是否可行,或者我可以做任何其他更有成效和效率的事情。因为我觉得我不需要两张地图来做到这一点,但我认为如果我只使用一张地图会影响数据的准确性。

编辑:
在回答之前,您需要了解有关该应用程序的一些信息。
1. 数据既不大也不小。
2. 从数据库填充缓存大约需要 2-3 分钟。
3. 刷新频率不高,一天只需要一两次。
4. 应用程序24小时运行(每天早上重启一次服务器)

4

2 回答 2

3

您可以尝试的是 EHCache,在这里您可以找到一个示例:ehcache

于 2012-11-29T05:50:24.883 回答
0

此外,如果您想实现一个简单的缓存,您可以使用 SoftReference。这是一种比使用 HashMap 更好的实现缓存的方法。

当您存储对 HashMap 的引用时,它会存储对对象的强引用,并且当您将对象设置为 时null,它仍然不会被垃圾收集,因为映射中有对它的强引用。

有关缓存的更多信息,这里有一个很好的链接: 基于 SoftReference 的缓存

于 2012-11-29T06:21:39.580 回答