Python Redis отследить окончание срока годности ключа

Использую Redis по следующему шаблону:

  1. При первом обращении пользователя к приложению данные из MongoDB (инвентарь, статистика и многое другое) попадает в ОЗУ (Redis) и живут там 10 минут.
  2. Далее пользователь может использовать, изменять эти данные
  3. После того, как пользователь закончил, новые данные остаются в ОЗУ и пропадут через некоторое время.

Собственно загвоздка в том, что я не хочу чтобы эти данные просто пропадали, а отправлялись в БД, так как больше ненужны в текущий момент пользователю. Могу ли я как-то отследить этот момент, чтобы сохранить свежее данные в внешнюю базу данных?

Должен ли я делать какой-то вечный цикл, который проверяет срок годности данных и в случае, если они залежались и не используются, отправлять их в БД? Или для этого есть какой-то встроенный инструмент в Redis?


Ответы (1 шт):

Автор решения: zalex

Если не брать во внимание вашу терминологию (Redis != RAM и даже Redis !== RAM) то идея про "вечный цикл" разбиваеться о мысль - "а вдруг в этот самый момент, когда там все залежались, другой источник изменит данные этого пользователя ? " . Нууу.. например ... админ. Ну вот админ взял и поменял данные пользователя, которые хранятся где то локально, а потом эти данные затирают внесенные админом данные ??

А вот смотрите, еще вариант - пользователь внес миллион данных и пошел спать, а в это время выключили свет и эти данные канули в лету ? Что вам скажет пользователь ? Ну, возможно расскажет про то что нужно вечный цикл как то делать более цикличным ?

А вот еще вариант - вы сделали вечный цикл и научились определять когда "пора записывать данные". И вот приложение пытается записать, а в это время рвется соединение. И рвется на время больше чем таймаут условной записи условной библиотеки ? И что делать ? Вы для этого внедрите ИИ чтоб он определял осуществилась ли запись ? Уверен что то отличный вариант для решаемой задачи, однако похоже что я вас пытаюсь убедить что данная задача решается не так.

→ Ссылка