最佳答案
旧版本的cache2k内置了持久性支持。它正在工作,但是,它从未达到我完全信任的生产水平。
实际问题是 clear()
操作,该操作的实现相当复杂。无论存储实现需要一些时间来删除数据,清除都应该很快。因此,我的想法是切换到写回方案,其中操作会排队并在存储再次可用时执行。仅仅为了清楚起见而实现部分写回方案,是相当复杂的工程......
目前我从功能集中放弃了持久性,因为我不想要一个具有稳定 API 并已经提供了很多有用功能的 1.0 版本。
正如您从cache2k上的路线图所看到的那样目前的计划是首先添加批量和异步功能,然后再回到存储。异步功能完成后,存储接口(interface)可能需要看起来完全不同。
在当前的cache2k实现中仍然存在存储将被 Hook 的接口(interface),因此我不会完全放弃已经实现的东西。 flush()
和 purge()
仍然是其中的一些残余。所以我最好在1.0版本中删除这两个方法,以避免混淆。
顺便说一句:自从我在 Guava 上看到您的问题以来,cache2k 支持 CacheWriter
,它是 CacheLoader
的对应项。使用缓存加载器和写入器,您可以自己读取和写入存储,但这与缓存本身内部的存储支持不同。例如,cache.contains(...)
会检查存储,但至少根据 JSR107 以及我所知道的每个缓存实现,它不会检查缓存加载器。
关于java - 如何在cache2k中定义持久存储?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36916528/