【问题标题】:Usability of Cache [closed]缓存的可用性[关闭]
【发布时间】:2012-11-29 05:07:15
【问题描述】:

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

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

【问题讨论】:

  • 考虑到您对实际需求、数据大小、刷新频率、应用程序的生命周期等没有说什么,这里没有人有资格回答这个问题.

标签: java caching concurrency map


【解决方案1】:

你可以试试 EHCache,在这里你可以找到一个例子:ehcache

【讨论】:

    【解决方案2】:

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

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

    有关缓存的更多信息,这里有一个很棒的链接: Cache based on SoftReference

    【讨论】:

    • ehcache 可能使用了相同的技术
    猜你喜欢
    • 2020-08-25
    • 2012-08-24
    • 1970-01-01
    • 1970-01-01
    • 2010-10-13
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多