Назад к вопросам
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)
Такой подход повышает производительность и снижает нагрузку на основную базу данных.