Postgres является мастер-данными для справочника. В Postgres появилась новая номенклатура (новый товар) — он должен появиться в Redis?

Для этого обычно реализуют один из подходов:

Короткий ответ

Что ответить на собеседовании

Если Postgres является источником правды (мастер-данными) для справочника, то при появлении новой номенклатуры (нового товара) в Postgres, данные должны быть синхронизированы с Redis, если Redis используется как кэш или быстрый доступ к справочнику.

Подробный разбор

Ответ с пояснениями

Если Postgres является источником правды (мастер-данными) для справочника, то при появлении новой номенклатуры (нового товара) в Postgres, данные должны быть синхронизированы с Redis, если Redis используется как кэш или быстрый доступ к справочнику.

Для этого обычно реализуют один из подходов:

  1. Событийная синхронизация — после добавления товара в Postgres генерируется событие, которое обрабатывается сервисом и обновляет Redis.
  2. Периодическая синхронизация — по расписанию данные из Postgres выгружаются и обновляют Redis.
  3. Write-through кэш — при записи в Postgres одновременно обновляется Redis.

Пример на Go (упрощённо):

// После вставки товара в Postgres
func AddProduct(product Product) error {
    err := insertIntoPostgres(product)
    if err != nil {
        return err
    }
    // Обновляем Redis
    err = redisClient.Set(ctx, product.ID, product, 0).Err()
    return err
}

Таким образом, новая номенклатура появится в Redis, обеспечивая актуальность данных.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее