6

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

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

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

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

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

4

1 回答 1

0

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

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

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

于 2017-11-23T20:38:34.213 回答