Sobes.tech
Назад к вопросам
Senior
3

Можно ли хранить в Redis только order_id -> current_status, а полную карточку заказа читать из replica? Как разделить эти два типа чтений?

Компании, где спрашивали
plata

Ответ от нейросети

sobes.tech AI

Да, можно хранить в Redis только отображение order_id -> current_status, а полную карточку заказа читать из реплики базы данных. Такой подход позволяет быстро получать актуальный статус заказа из Redis, минимизируя задержки, и при этом использовать реплику для более тяжёлых запросов с полной информацией.

Для разделения двух типов чтений можно:

  • Использовать разные сервисы или слои в приложении: один отвечает за быстрый доступ к статусу через Redis, другой — за получение полной информации из реплики.
  • В API или бизнес-логике явно разделять запросы: запросы на статус идут в Redis, запросы на полную карточку — в реплику.
  • Кэшировать в Redis только те данные, которые часто меняются и нужны быстро, а остальные данные получать из реплики.

Пример:

// Получение статуса из Redis
status, err := redisClient.Get(ctx, orderID).Result()

// Получение полной карточки из реплики
orderCard, err := replicaDB.QueryOrder(orderID)

Такой подход повышает производительность и снижает нагрузку на основную базу данных.