我想一次重新加载cache2k中的所有缓存条目。我使用的是1.2.2版本。
我尝试过使用org.cache2k.integration.CacheLoader#load方法,但它只接受一个键并返回一个值。我不喜欢一次只从数据库下载一条记录的想法。这不是最理想的。
我希望使用完全一个db查询重新加载所有缓存条目。请指导什么是建议的方式来实现它。
谢谢你的回答!
发布于 2019-07-30 15:16:52
您可以通过以下方式指示cache2k重新加载所有条目:
cache.reloadAll(cache.keys(), null);但是,在当前版本中,通过加载程序线程池一个一个地重新加载所有条目。所谓的“散装货”现在已经失踪了。对此已经有更多的需求。它在这里被跟踪:https://github.com/cache2k/cache2k/issues/116
如果您总是大量加载整个内容,那么问题是您是否实际需要有单独的缓存条目,而需要缓存包含所有项的单个映射。参见这里的一些讨论:https://github.com/cache2k/cache2k/issues/122
使用加载程序有几个优点,例如恢复能力和提前刷新。如果您不需要这样做,只想用新的内容填充缓存,就可以使用cache.keys()获取缓存密钥的列表,请求数据库,然后通过cache.putAll()更新整个缓存。
https://stackoverflow.com/questions/57255496
复制相似问题