Redis Cluster

Тема дорожной карты · Redis

Redis Cluster — это встроенное решение для распределённого кэша, автоматически распределяющее данные по нескольким узлам Redis с помощью хэш-слотов, что обеспечивает горизонтальное масштабирование за пределы памяти одного сервера. Кластер делит пространство ключей на 16 384 хэш-слота, причём каждый первичный узел в Redis Cluster владеет подмножеством этих слотов, тогда как реплики обеспечивают избыточность и масштабирование чтения. Для включения кластеризации в redis.conf каждого узла задаются cluster-enabled yes и cluster-node-timeout 5000, после чего узлы объединяются командой redis-cli --cluster create. Redis Cluster поддерживает автоматическое переключение при сбое: когда первичный узел становится недоступным, его реплики проводят выборы, и один из них повышается до первичного в течение нескольких секунд, сохраняя высокую доступность хранилища данных в памяти. Понимание Redis Cluster необходимо любой команде, запускающей Redis как распределённый кэш в масштабе, поскольку он устраняет ограничения памяти одного узла без необходимости сторонних прокси.

Как это работает

Redis Cluster шардирует данные между нодами через 16384 слота. Каждый ключ хешируется в слот; каждая master-нода владеет диапазоном слотов. Реплики бекапят masters (sentinel-less HA встроен). Клиенты cluster-aware: кешируют map слот→нода, следуют MOVED/ASK редиректам. Multi-key команды работают только на ключах в одном слоте (используйте {tag} в ключах для force same-slot: user:{42}:profile и user:{42}:posts).

Когда применять

Cluster — когда (а) данные превышают RAM одного хоста, (б) write throughput выше, чем одна master может, (в) нужен авто-failover без Sentinel. Для большинства приложений с < 100GB working set — один primary + реплика (с Sentinel или без) проще и достаточно. Тестируйте cluster failover до зависимости от него; cluster-операции сложнее single-node.

Типичные ошибки

Ловушки Redis Cluster: multi-key команды (MGET, SINTER) падают, потому что ключи в разных слотах (используйте {hashtag} для co-locate); старые клиенты не понимают cluster mode (тихие замедления от MOVED retry loop); ребалансировка в production без наблюдения за памятью + миграцией слотов (один move слота кратко стопит записи).

Связанные понятия

Полезные ресурсы

Проверить знания (1)

Загрузка вопросов…