2012-01-09 3 views
6

Iam с использованием JCS для кэширования. Теперь я использую дисковый кеш для временного хранения всех данных. Проблема в том, что я использую JCS, ключи записываются на диск, только если кеш правильно неисправность.Закрытие кеша JCS, гарантированное сохранение на диске

Я использую шаблон использования диска как UPDATE, который сообщает JCS немедленно записывать данные на диск, не сохраняя их в памяти. Но проблема в том, что мы не занимаем ключевой список объектов в кеше. Поэтому я использую группу кэш-доступ и получить ключи из кеша, а затем перебирать ключи для получения результатов.

Итак, теперь я попал в ситуацию, когда мне нужно закрыть кэш должным образом, т. Е. После того, как все данные записаны на диск с помощью диска с индексированным диском. Но здесь есть сложность, кеш индексированного диска использует фоновый поток для пишите на диск, который ничего не возвращает по своему статусу.

Так что теперь я не могу гарантировать, что кэш с индексированным диском записал данные на диск в мою реализацию переднего конца. Есть ли способ решить эту ситуацию, потому что теперь я просто сплю какое-то случайное время (скажем, 10 секунд), прежде чем кеш отключится, что является очень глупым способом сделать это на самом деле.

Редактировать: Я столкнулся с этой проблемой с кэшем памяти, но спать одной секунды в основном достаточно для 500 МБ данных. Но случай с кешем диска немного отличается.

ответ

0

Возможно, это связано с тем, что ваши объекты хранятся в памяти и ждут записи на диск. Если вам нужно немедленно записать объекты на диск во время выполнения, вам необходимо сделать MaxObjects ваших конфигураций кеша 0.

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

Я знаю, что вы уже знаете о UPDATE. Добавив его для справки снова.

Смежные вопросы