我想一次重新加载cache2k中的所有缓存条目。
我正在使用1.2.2版。
我尝试使用org.cache2k.integration.CacheLoader#load方法,但它只接受一个键并返回一个值。我不喜欢一次只从数据库下载一条记录的想法。这不是最佳的。
我希望使用一个数据库查询来重新加载所有缓存条目。
请指导实现此目标的推荐方法。
谢谢您的回答!
最佳答案
您可以通过以下命令指示cache2k重新加载所有条目:
cache.reloadAll(cache.keys(), null);
但是,在当前版本中,这会通过加载程序线程池一个接一个地重新加载所有条目。目前缺少所谓的“批量加载”。已经有更多需求。它在这里跟踪:https://github.com/cache2k/cache2k/issues/116
如果始终总是批量加载全部内容,则存在一个问题,您是否实际上需要拥有单独的缓存条目,而不是缓存包含所有项目的单个映射。在此处查看一些讨论:https://github.com/cache2k/cache2k/issues/122
使用装载机有几个优点,例如弹性和刷新。如果不需要此功能,而只想用新内容填充缓存,则可以使用
cache.keys()
获取缓存键的列表,请求数据库,然后通过cache.putAll()
更新整个缓存。