我打算使用infinispan作为我的Hibernate应用程序L2缓存。我的所有实体都有一个生命周期属性[New - >运行 - >完成]。最初我的实体处于新状态,当时间过去时,它会移动到其他状态。
简单地说,当实体生命周期属性状态到达“已完成”状态时,我想从缓存中逐出实体。与我的理解一样,Infinispan不支持自定义驱逐政策。什么是处理我的情况的最佳方式?
答案 0 :(得分:0)
我会在适当的时候使用Cache API中的evict(key)
方法实现我自己的逻辑。
public void evict(K key)
从缓存的内存中删除一个条目。请注意,该条目是 未从任何已配置的缓存存储区或任何其他缓存中删除 群集(如果在群集模式下使用)。使用Cache.remove(Object)来 从整个缓存系统中删除一个条目。
一旦"key1"
的实体达到其已完成状态,您可以触发ispnCache.evict("key1");
进行驱逐。