Вы попросили удалить элемент из кэша.
Кэширование сложное. Это одна из вещей, которую вы должны очень тщательно реализовать в соответствии с документацией. Как это бывает, вы просите вещи, которые вам не нужны.
ChangeMonitors
не относится к объектам, отслеживающим кеш . Он представляет мониторы, которые сообщают, когда кэш должен быть признан недействительным. Например, если у вас есть файл, который вы хотите кэшировать в памяти, вы используете монитор изменения файлов, поэтому, когда файл изменяется на диске, он немедленно становится недействительным в кэше. Для бонусных баллов CacheEntryChangeMonitor
немедленно вызовет удаленное уведомление, если ключ не существует в кэше. Соедините эти два поведения вместе и ...
- Вы создаете новую политику кэширования с монитором изменений, который отслеживает
cache
для ключа cacheName
- Ключа нет в кеше с именем, указанным
cacheName
, поэтому монитор изменений сразу регистрирует элемент как удаленный - Элемент кэша добавляется с ключом
key
. Это успешно, и добавляет элемент в кэш. Однако монитор изменений говорит, что элемент должен быть признан недействительным, поэтому он немедленно удаляется из кэша. Get(key)
возвращает значение NULL, как и положено
В итоге: если вы Чтобы отслеживать изменения в кэше, используйте RemovedCallback
или CacheEntryChangeMonitor
. Если вы хотите сделать недействительным элемент кэша при изменении чего-либо еще, используйте ChangeMonitors
.