缓存条目未从缓存存储中删除(SingleFileCacheStore)

时间:2014-06-27 08:28:49

标签: java spring caching infinispan

我正在使用singleFileCacheStore。我已将maxEntries设置为0且passivation已禁用

<persistence passivation="false" >  
        <singleFile fetchPersistentState="true" preload="true"   
                     ignoreModifications="false"  
                     purgeOnStartup="false" maxEntries="0" >  
         </singleFile>  
</persistence>  

在我的应用程序中,我正在解雇cache.remove(key),但我仍然在底层文件中看到条目。

有任何线索,什么错?我是否需要调用任何额外的API。

1 个答案:

答案 0 :(得分:2)

条目的空间刚刚被标记,它将被新的或更新的条目重用。因此,您将始终看到旧数据,直到写入新内容。

处理清除时,文件本身将被截断/缩小。 SingleFileCacheStore实现非常简单,所以只有在文件末尾有空闲空间时才会发生这种情况。如果文件中间的某个位置有空闲空间,则没有压缩。这并不完美,但相当不错,因为缓存中的条目通常总是存在波动。但这意味着,如果强制清除,即使有可用空间,文件也不会被截断。

documentation中的驱逐中查看如何控制清除。基本上就是:

  

EvictionManager的目的是驱逐驱逐/过期   定期清除DataContainer中项目的线程。如果   驱逐线程被禁用(wakeupInterval设置为-1)驱逐即可   使用EvictionManager.processEviction()手动启动   来自另一个可能定期运行的维护线程的示例   你的申请。