Кэш Play Framework Удалить элементы, соответствующие регулярному выражению

Мне было интересно, есть ли способ удалить элементы из кеша Play с помощью регулярного выражения.

Я использую play 2.2.x и сохраняю элементы в кеше по следующему шаблону:

collectionName.identifier

Есть ли способ истечь срок действия кеша, используя регулярное выражение для соответствия ключу, например:

collectionName.[a-zA-Z0-9]+

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

Если в ReactiveMongo есть способ получить обновленные идентификаторы объектов, это тоже поможет мне.

Спасибо за любую помощь.


person Bruno Follon    schedule 05.03.2015    source источник


Ответы (1)


Кэш Play использует Ehcache внизу. Вам нужно будет работать с Ehcache напрямую.

  1. Доступ к базовому объекту Ehcache с помощью app.plugin[EhCachePlugin].cache (см. исходный код плагина).

  2. Затем вызовите getKeys метод объекта Ehcache. чтобы получить список ключей входа в кэш.

  3. Затем сопоставьте сами ключи и удалите все записи, соответствующие вашему регулярному выражению.

Кстати, было бы лучше, если бы вы обновляли или удаляли элементы из кэша при обновлении базы данных.

person Rich Dougherty    schedule 05.03.2015
comment
Да, это именно то, что я пытаюсь сделать (обновление кеша сразу после обновления базы данных), я попробую ваш ответ и дам вам знать, спасибо. - person Bruno Follon; 06.03.2015