我使用了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/