Кэширование и Redis

Разбери, где кэш помогает, чем за него платит система и как он ведёт себя при гонках и сбоях. Пройди от cache-aside и структур Redis до stampede, персистентности и блокировок, чтобы выбирать подход под конкретную гарантию и нагрузку.

  1. 7.1 Зачем кэш и уровни кэширования

    Оцени кэш через выигрыш и цену: он уменьшает часть обращений к источнику, но добавляет память, сетевой путь и риск устаревших данных. Сопоставь L1, Redis и базу по латентности, общей видимости и последствиям промаха.

  2. 7.2 Redis: устройство и почему он быстрый

    Пойми, как Redis обрабатывает команды и почему сложность команды имеет значение при общей последовательной обработке. Используй SCAN для обслуживания ключей, обходи большие значения порциями и отделяй блокирующую работу от обычных соединений.

  3. 7.3 Структуры данных Redis и сценарии

    Выбирай тип Redis под операцию и гарантию: строка для атомарного счётчика, hash для полей сущности, sorted set для ранжирования или временных оценок, Stream для подтверждаемой ленты. Сопоставляй сложность операции, объём состояния и восстановление после сбоя.

  4. 7.4 Стратегии кэширования и инвалидация

    Сравни стратегии cache-aside, read/write-through и write-behind по тому, кто читает и пишет источник истины. Разбери гонку между медленным чтением и инвалидацией и выбери способ ограничить устаревание с учётом допустимого окна.

  5. 7.5 Cache stampede, горячие и большие ключи

    Разбери, как истечение одного ключа может превратиться в stampede, а одна горячая команда или большой ключ - задержать весь Redis. Сопоставь singleflight, jitter, раннее обновление, разбиение данных и репликацию по их разным целям.

  6. 7.6 Вытеснение, персистентность, отказоустойчивость

    Выбери Redis-настройки исходя из роли данных: вытеснение, RDB/AOF и Sentinel/Cluster дают разные свойства. Пойми, какие записи можно потерять при каждом механизме и почему Redis как кэш не должен быть единственной копией критичного состояния.

  7. 7.7 Распределённые блокировки и Redis из Go

    Разбери ограничения lock через SET NX PX: владелец может пережить TTL, а новый владелец уже начать работу. Сравни lock с fencing token, разберись в pub/sub и Streams, затем проверь, как go-redis ведёт себя при промахе, таймауте и заполненном пуле.