Skip to main content

Що таке Redis Cluster?

Redis Cluster - це режим роботи Redis, у якому дані автоматично розподіляються між кількома вузлами (серверними інстансами), щоб забезпечити масштабування й відмовостійкість.

Головна ідея

У звичайному Redis - усі дані зберігаються на одному сервері. У Redis Cluster - ключі діляться між вузлами за хеш-слотами (всього 16384 слоти). Кожен master-вузол відповідає за певний діапазон слотів.

Приклад:

javascript
master1 → слоти 0-5460 master2 → слоти 5461-10922 master3 → слоти 10923-16383

Архітектура

  • Кожен master зберігає частину даних.
  • У кожного master є одна чи кілька реплік (replicas).
  • Репліки автоматично переходять у роль master при збої основного вузла.

Таким чином:

javascript
master1 → replica1 master2 → replica2 master3 → replica3

Як це працює

  1. Клієнт підключається до будь-якого вузла кластера.
  2. Вузол визначає, якому слоту належить ключ (за хеш-функцією CRC16).
  3. Якщо слот перебуває в іншого master - повертається відповідь MOVED, і клієнт перенаправляється до потрібного вузла.
  4. При падінні master одна з його реплік автоматично стає новим master.

Що дає Redis Cluster

  • Масштабування по горизонталі - можна додавати вузли, і дані будуть перерозподілятися.
  • Відмовостійкість - при падінні master його replica бере керування на себе.
  • Автоматична маршрутизація - клієнти знають, де шукати потрібний ключ.

Обмеження

  • Не всі команди підтримуються (наприклад, MULTI/EXEC з кількома ключами з різних слотів).
  • Вимагає коректного клієнтського драйвера, що вміє працювати з кластером.
  • Частина даних може бути тимчасово недоступна, якщо master і всі його репліки впадуть.

Підсумок

Redis Cluster - це вбудована в Redis розподілена система, де дані діляться на 16384 слоти між кількома master'ами з репліками, забезпечуючи масштабування, відмовостійкість і автоматичне відновлення без зовнішніх інструментів на кшталт Sentinel.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.