Кэш списков каталога: какие ключи сбрасывать при изменении товара
Выдача каталога кэшируется по комбинации фильтров: ключ вида catalog:{хеш фильтров}:page:{n}. Таких ключей десятки тысяч. Менеджер изменил один товар, и его нужно увидеть во всех списках, куда он попадает.
Как поступают в этой ситуации?
- Пройти по всем ключам командой KEYS catalog:* и удалить подходящие: это обычная и безопасная операция для боевого Redis
- Списки не кэшируют в принципе: кэшируются только отдельные сущности по идентификатору, а страницы собираются из них на лету
- Выполнить FLUSHALL: это самый простой способ, и он безопасен, потому что все данные всё равно восстановятся из базы
- Использовать версию в пространстве ключей (номер версии внутри ключа) или теги, чтобы одним действием обесценить всю группу списков
