Пользователь сменил имя, а в профиле два дня показывается старое
Профиль читается по схеме cache-aside: сначала смотрим в Redis по ключу user:42:profile, при промахе идём в базу и кладём результат в кэш.
TTL у ключа не задан. Обработчик изменения профиля пишет новые данные в базу и на этом заканчивается.
Почему пользователь второй день видит старое имя?
- Ключ живёт бессрочно и никем не сбрасывается: нужны TTL и инвалидация при обновлении
- Redis сам вытесняет ключ, как только строка в базе по этому идентификатору изменилась
- Порядок чтения неверный: сначала нужно читать базу, а в кэш заглядывать только при ошибке
- Проблема в сериализации: словарь нужно хранить не строкой, а в структуре типа hash
