Sobes.tech
Senior

Postgres is de hoofdgegevensbron voor de directory. Er is een nieuwe nomenclatuur (nieuw product) verschenen in Postgres — moet deze in Redis verschijnen?

sobes.tech AI

Antwoord van AI

Если 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, обеспечивая актуальность данных.