Как программно контролировать постоянство в Redis

Я использую Redis с моим весенним загрузочным приложением, используя jedis, spring-data-redis. Я хочу контролировать механизм сохранения Redis следующим образом.

  • В одном случае я хочу, чтобы данные сохранялись в файле дампа, чтобы при перезапуске сервера Redis эти данные были доступны.

  • Во втором случае я хочу хранить данные только в Redis в памяти и быть доступными для приложения до тех пор, пока сервер Redis не будет запущен, и их следует удалить при перезапуске сервера Redis.

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


person Vivek    schedule 26.06.2020    source источник


Ответы (1)


Я нашел решение этой проблемы. Итак, изменения, которые я сделал для управления сохраняемостью только программно, приведены ниже.

  • Прокомментируйте все сохраненные строки из файла конфигурации Redis. Это остановит механизм постоянства Redis по умолчанию, основанный на времени/операциях.

  • Затем вызовите сохранить() или bgsave() всякий раз, когда вы хотите сохранить данные на диске.

Таким образом, используя RedisTemplate вы можете позвонить

redisTemplate.getConnectionFactory().getConnection().save();

и это сохранит изменения на диске.

По моему требованию я передаю флаг shouldPersist своим методам репозитория, чтобы решить, сохранять ли данные или нет. Если данные не сохраняются с помощью save или bgsave, они будут удалены при перезапуске сервера. Это то, что я хочу для некоторых из моих сценариев.

person Vivek    schedule 27.06.2020