如何在cache2k中定义持久化存储?

How to define persistence storage in cache2k?

Cache apidoc 中提到,purge()flush() 等几种方法的运行取决于配置的持久性存储。

很遗憾,我找不到,如何配置一个?

真的可以吗?

旧版本的 cache2k 内置了持久性支持。它正在运行,但是,它从未达到我完全信任的生产水平。

实际问题是 clear() 操作,它的实现相当复杂。清除应该很快,不管存储实现是否需要一些时间来删除数据。所以,我的想法是切换到回写方案,当存储再次可用时,操作会被排队并执行。为清楚起见而实施部分回写方案,是相当多的工程...

目前我从功能集中删除了持久性,因为我不想要一个具有稳定 API 并且已经提供了很多有用功能的 1.0 版本。

cache2k 主页上的路线图可以看出,目前的计划是首先添加批量和异步功能,然后再回到存储。完成异步功能后,存储界面可能需要看起来完全不同。

在当前的 cache2k 实现中,仍然有连接存储的接口,所以我不会完全放弃已经实现的东西。 flush()purge() 仍然是一些残余。所以我最好在 1.0 版本中删除这两个方法,以避免混淆。

顺便说一句:自从我在 Guava 上看到你的问题后,cache2k 支持 CacheWriter,它与 CacheLoader 对应。使用缓存加载器和写入器,您可以自己读取和写入存储,但这与缓存本身内部的存储支持不同。例如 cache.contains(...) 会检查存储,但至少根据 JSR107 和我所知道的每个缓存实现,它不会检查缓存加载器。