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

Mad*_*nan 6 java concurrency performance caching jcs

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

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

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

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

编辑:我也面临着内存缓存的这个问题,但是一秒的睡眠大部分足以容纳500mb的数据.但是磁盘缓存的情况稍有不同.

小智 0

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

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

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