У меня есть приложение SpringBoot, которое использует аннотацию @Cacheable
поверх метода с Redis Caching. У меня есть @EnableCaching
в моем основном классе SpringBootApplication, и в моем файле application.yml для проекта у меня есть эти свойства:
spring.cache.cache-names: getMyMethodCache
spring:
cache:
type: redis
redis:
time-to-live: 300000 # 5 minutes
Когда я делаю это локально, я могу подключиться к redis-cli и увидетьчто метод успешно кэшируется с помощью Time-To-Live, которое было указано при запуске 127.0.0.1:6379> TTL "myKeyName"
.
Я пытаюсь подключить свой экземпляр App Engine на Google Cloud Platform к экземпляру Redis в магазине памяти. Экземпляр создается со всеми значениями по умолчанию и дал мне IP-адрес и порт, которые я поместил в свой файл .properties для своей службы.
В качестве примечания, установив spring.cache.redis.time-to-live изменяет значение по умолчанию TTL во всем приложении для всех ключей кэша Redis. Это работает локально.
После нескольких звонков на мой веб-сервис через почтальон я подождал несколько минут (в хранилище памяти есть задержка) и увидел, что мои ключи отображаются в хранилище памяти "Ключи в базе данных"" место нахождения. Затем я подожду еще 5 минут и увижу, что срок их действия не истекает.
Затем я экспортировал базу данных Redis Memory Store и запустил ее с помощью команды RDB tools через rdb --c protocol export.rdb
и получил несколько странный вывод, содержащий это:1016 *
$8
EXPIREAT
$83
getMyMethodKey::TheResponseThatWasCached
$10
1573335619
*3
Я обнаружил, что EXPIREAT ссылается на «1573335619», который является меткой времени Unix для 9 ноября, через месяц. Короче говоря, я пытаюсь заставить мой Redis Memory Store реагировать на мое пользовательское время по умолчанию, но, похоже, он не регистрирует мои свойства в моем файле yaml.
Любая помощь в отношенииКак установить свойство EXPIRE ключа кеша хранилища памяти, будет с благодарностью.