Какой разумный интервал времени для аннулирования (обновления) любого кэша?
Мы решили использовать кеш (не определяем конкретный кеш), но сегодня стало известно, что нам нужно аннулировать данные кеша или обновлять данные кеша каждые 2 минуты, подключившись к хранилищу данных, но я думаю, что 2 мин не выполнимо, потому что если вы продолжаете обновлять данные кеша каждые 2 минуты, то лучше подключиться к самому хранилищу данных, так что кто-нибудь может предложить подсказать допустимый интервал времени, мы можем установить недействительность кеша старой даты и обновить кеш с данными из хранилища данных?
Примечание: мы используем весеннюю загрузку, postgres
1 ответ
Я думаю, вы немного запутались в кешировании. Если вы кешируете результат операции (скажем, X) в течение двух минут, это означает, что каждый, кто повторяет операцию менее чем за две минуты, будет иметь X как результат, через две минуты кэш-память станет недействительной и будет сохранена снова. в следующий раз, когда будет запрошена операция, поэтому, если никто не выполнит операцию в течение двух часов, она будет обновлена через два часа.
Время, в течение которого элемент должен присутствовать в кэше, зависит от множества факторов, поэтому невозможно рассчитать абсолютное допустимое значение для всех случаев.
- Какова скорость выполнения операции для кэширования?
- Быстро ли меняется результат операции? Вы кешируете что-то, что меняется ежедневно? ежечасно?
- Приемлемо ли для того, кто получает в кэшированном результате старую версию результата, сколько ему может быть лет?
Я оставляю вас с этой цитатой (это необходимо в этой теме):
"There are only two hard problems in Computer Science:
cache invalidation and naming things."
-- Phil Karlton