java - 通过 spring 点燃缓存。动态驱逐期持续时间

标签 java spring caching duration ignite

我使用了Ignite缓存。看起来通过 spring 工作得很好。

问题 1:如果服务器重新启动,缓存会丢失数据并且无法修复。

问题1的解决方案:使用db来持久化所有缓存数据。

问题 2:从数据库加载的每个元素的逐出周期应该不同。

问题 2 的解决方案:为每个元素配置缓存逐出周期持续时间???

根据 ignite 文档,我可以将缓存的逐出周期配置为常规

igniteCacheConfig.setExpiryPolicyFactory(new ExpiryPolicyFactory(duration));

但我不知道如何以单独的方式为每个元素配置它。

问题

我的问题 2 的解决方案需要帮助,或者如果有必要,我准备考虑更改问题 1 的解决方案:如果它有助于获得更好的方法>问题 2 的解决方案

最佳答案

您可以使用cache.withExpiryPolicy()获得 具有特定 ExpiryPolicy 的缓存包装器。 此策略将仅在此缓存包装器上的操作期间使用。

IgniteCache<Object, Object> cache = cache.withExpiryPolicy(new
CreatedExpiryPolicy(new Duration(TimeUnit.SECONDS, 5)));

您可以根据需要创建尽可能多的包装器,并使用 put/get/etc 条目 他们。

这里有一些 example点燃用户列表中描述

关于java - 通过 spring 点燃缓存。动态驱逐期持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44494661/

相关文章:

asp.net - 当调用命中缓存时,OutputCache 发送错误的 Vary header

java - 编译servlet时出错

java - 如何使用 JAXB 在我的 Java 代码中创建 UUID 以传递 XSD 模式限制

java - DefaultThreadFactory本身是线程安全的吗?

java - ReadyStatement - 不绑定(bind)所有参数

java - 使用springboot时如何在mybatis-config.xml中设置数据源?

Java AsyncTask 虽然publishProgress(progress)没有在UI上显示进度

java - 没有唯一节点名称的解码

apache-spark - Spark 什么时候会自动清理缓存的 RDD?

ruby-on-rails - 片段缓存 vs 页面缓存