Вступить в клуб →
средняявопросКэш, очереди и надёжность сервисов

Разные пользователи видят в списке чужие заказы: разбор ключа кэша

Список заказов кэшируется в Redis:

key = "orders:list"
cached = redis.get(key)
if cached:
    return json.loads(cached)

data = get_orders(user_id=user.id, status=status)
redis.setex(key, 60, json.dumps(data))
return data

Пользователи жалуются, что в списке появляются чужие заказы и не совпадает выбранный фильтр.

В чём причина?

  • Слишком большой TTL: если поставить пять секунд вместо минуты, проблема исчезнет
  • Ключ не зависит от параметров выборки: в него должны входить user_id и значения фильтров
  • Нужно использовать redis.set вместо setex, а срок жизни задавать отдельной командой
  • Данные нельзя хранить строкой JSON: список нужно записывать в структуру типа hash

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела