一次重新加载所有 cache2k 条目
Reloading all cache2k entries at once
我想一次重新加载 cache2k 中的所有缓存条目。
我正在使用版本 1.2.2.
我尝试使用 org.cache2k.integration.CacheLoader#load 方法,但它只接受一个键和 returns 一个值。我不喜欢一次只从数据库下载一条记录的想法。这不是最佳选择。
我希望使用一个数据库查询重新加载所有缓存条目。
请指导实现它的推荐方法是什么。
感谢您的回答!
您可以通过以下方式指示 cache2k 重新加载所有条目:
cache.reloadAll(cache.keys(), null);
但是,在当前版本中,这会通过加载程序线程池逐一重新加载所有条目。目前缺少所谓的 "bulk loading"。已经有更多的需求了。它在这里被追踪:https://github.com/cache2k/cache2k/issues/116
如果您总是批量加载全部内容,那么问题是您是否真的需要单独的缓存条目,而是缓存包含所有项目的单个地图。在这里查看一些讨论:https://github.com/cache2k/cache2k/issues/122
使用加载程序有几个优点,例如韧性和刷新前进。如果您不需要这个,只想用新内容填充缓存,您可以使用 cache.keys()
获取缓存键的列表,请求数据库,然后通过 cache.putAll()
更新整个缓存。
我想一次重新加载 cache2k 中的所有缓存条目。 我正在使用版本 1.2.2.
我尝试使用 org.cache2k.integration.CacheLoader#load 方法,但它只接受一个键和 returns 一个值。我不喜欢一次只从数据库下载一条记录的想法。这不是最佳选择。
我希望使用一个数据库查询重新加载所有缓存条目。 请指导实现它的推荐方法是什么。
感谢您的回答!
您可以通过以下方式指示 cache2k 重新加载所有条目:
cache.reloadAll(cache.keys(), null);
但是,在当前版本中,这会通过加载程序线程池逐一重新加载所有条目。目前缺少所谓的 "bulk loading"。已经有更多的需求了。它在这里被追踪:https://github.com/cache2k/cache2k/issues/116
如果您总是批量加载全部内容,那么问题是您是否真的需要单独的缓存条目,而是缓存包含所有项目的单个地图。在这里查看一些讨论:https://github.com/cache2k/cache2k/issues/122
使用加载程序有几个优点,例如韧性和刷新前进。如果您不需要这个,只想用新内容填充缓存,您可以使用 cache.keys()
获取缓存键的列表,请求数据库,然后通过 cache.putAll()
更新整个缓存。