JCS Cache关闭,保证磁盘持久性

时间:2012-01-09 10:11:25

标签: java performance caching concurrency jcs

我使用JCS进行缓存。现在我正在使用磁盘缓存来临时存储所有数据。问题是当我使用JCS时,只有在缓存正确关闭时才将密钥写入磁盘。

我正在使用磁盘使用模式作为UPDATE,它告诉JCS立即将数据写入磁盘而不将其保留在内存中。但问题是我们没有保留缓存中对象的密钥列表。所以我使用组缓存访问并从缓存中获取密钥,然后遍历密钥以获得结果。

所以现在我陷入了这样一种情况:我必须正确关闭缓存,即在使用索引磁盘缓存将所有数据写入磁盘之后。但是这里存在复杂性,索引磁盘缓存使用后台线程来写入到磁盘,它的状态不会返回任何内容。

所以现在,我无法保证索引磁盘缓存已将数据写入磁盘到我的前端实现。是否有办法解决这种情况,因为现在我只是在休息一些随机时间(例如10秒) ,在缓存关闭之前,这实际上是一种非常愚蠢的方式。

编辑:我也面临着内存缓存的这个问题,但是对于500mb的数据来说,一秒钟的休眠时间已经足够了。但是磁盘缓存的情况稍有不同。

1 个答案:

答案 0 :(得分:0)

可能是因为您的对象存储在内存中并等待写入磁盘。如果您需要在执行时立即将对象写入磁盘,则需要将缓存配置的MaxObjects设置为0

jcs.region.<yourRegion>.cacheattributes.MaxObjects=0 jcs.region.<yourRegion>.cacheattributes.DiskUsagePattern=UPDATE

我知道你已经知道UPDATE了。添加它以供参考。