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

标签 java cache2k

Cache apidoc中有这样的说法,purge()flush() 等多种方法的运行依赖于配置的持久存储。

不幸的是,我找不到,如何配置?

真的可以吗?

最佳答案

旧版本的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/

相关文章:

java - 立即重新加载所有cache2k条目

java - rootview.findViewById() 在 fragment 文件中不起作用

java - 自动创建 VMware 快照

javascript - 在 Unity 中使用 Android Studio 上的类

java - cache2k 和 Generic T 不能很好地结合在一起

caching - 是否可以使用Cache2k作为hibernate二级缓存并同时作为spring缓存管理器?

java - ZipOutputStream - 压缩内容错误的文件

MediaPlayer.isplaying() 方法中的 java.lang.IllegalStateException

java - 如何使用cache2k对过滤器进行单元测试

java - 相等的键触发缓存负载超过预期