这是我第一次在这里发布问题,我是 Guava Cache 的新手,所以请直接告诉我:)。 我面临两个问题:
假设当我的缓存配置为
在给定的缓存状态下,我有: “key1” -> (val1, val2, val3,...).
在数据库中我还有:“key1” - val4,“key1” - val5。
现在,据我了解,只有当 LoadingCache 注意到缺少键时,它才会查询数据库。因此,在这种情况下,它不会加载我需要的缺失值,因为它会看到缓存中的键 - 导致数据加载丢失。
也许我在理解机制方面遗漏了一些东西。
非常感谢您的帮助, 预先感谢!
尝试实现一个具有一对多键值映射的缓存。 多个值映射到一个键(在缓存中)。 不确定我应该如何实施它。
您可以将
refreshAfterWrite
添加到缓存生成器,以便它在一定时间段后自动刷新缓存。
LoadingCache<String, List<String>> cache = CacheBuilder.newBuilder()
.refreshAfterWrite(5, TimeUnit.MINUTES) // Set a refresh interval, e.g., every 5 minutes
.build(new CacheLoader<String, List<String>>() {
@Override
public List<String> load(String key) {
// Load the list of values for the given key from the database
List<String> valuesFromDB = loadValuesFromDB(key);
// Return the loaded values
return valuesFromDB;
}
});