Объединить 2 записи в кеш в одну - PullRequest
0 голосов
/ 16 апреля 2019

Есть счета, которые я кеширую, но с двумя записями в кеше.Первая запись в кеше сохраняется, если кеширование счетов существует или нет.Почему я это делаю?Потому что есть бизнес-логика (метод get_cache_timeout), которая сообщает мне, когда обновлять вторую запись кэша, которая содержит фактические данные счета.Итак, первый - это флаг для меня, чтобы понять, есть ли вторая запись кэша или нет.Если нет, я вызываю бэкэнд-систему и обновляю 1-ю и 2-ю записи в кэше.

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

cache.set(f'{invoices}_cache_exists', True, get_cache_timeout())
cache.set(f'{invoices}_cache', some_cache, 60*60*24*60)

Извините за неясное объяснение, но я надеюсь, что вы поняли идею этого решения.

Итак, в конце мой вопрос заключается в том, что для этой проблемы, как я могу избавиться от 1-й записи в кэш-памяти и иметь только 2-ю запись в кэше с 2-мя таймаутами?1-й дает мне указание, когда обновлять, а 2-й - удалить кеш.

1 Ответ

0 голосов
/ 16 апреля 2019

А как насчет этого?

#cache.set(f'{invoices}_cache_exists', True, get_cache_timeout())
cache.set(f'{invoices}_cache', some_cache, get_cache_timeout())

вы можете сделать так, чтобы срок действия вашего кэша истек через get_cache_timeout() раз.

В конце концов, если срок действия записи в кэше истекает, его необходимо обновить, так что знаяwhen to update решено.

На руке ордера when to remove, ну, это будет удаляться каждые get_cache_timeout() секунд / минут.

Это просто не имеет смыслаиметь запись в кэше с TTL M мин, который должен обновляться каждые m мин, где M> n

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...