相关疑难解决方法(0)

如何使用Google Guava自动刷新缓存?

我正在使用Google Guava库进行缓存.对于自动缓存刷新,我们可以执行以下操作:

cache = CacheBuilder.newBuilder()               
                    .refreshAfterWrite(15, TimeUnit.MINUTES)
                    .maximumSize(100)
                    .build(....);
Run Code Online (Sandbox Code Playgroud)

但是,当第一个条目的陈旧请求发生时,将执行自动刷新.

有没有办法自动刷新它,即使没有缓存数据的请求?就像每15分钟一样,缓存数据应该从Db中提取并加载它,无论是否有人调用缓存数据.

此外,Guava的缓存到期时间适用于整个缓存.是否可以基于密钥使缓存值失效?像密钥"NOT_SO_FREQ_CHANGE_DATA"的缓存数据每1小时到期一次,密钥"FREQ_CHANGING_DATA"的数据应该每15分钟到期一次?

java caching guava

30
推荐指数
3
解决办法
3万
查看次数

使用异步加载加载缓存

在guava中,使用LoadingCache时会同步调用CacheLoader.但是,我的load()操作可能需要很长时间(约1秒),我想采取默认操作,以防它需要太长时间(> 200毫秒)并异步加载该值.

有没有办法实现这个目标?或者您可以推荐其他方法吗?

java caching guava

5
推荐指数
2
解决办法
6694
查看次数

标签 统计

caching ×2

guava ×2

java ×2