Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Як Redis Cluster масштабується горизонтально?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)Redis Cluster масштабується горизонтально, розподіляючи ключі по 16384 хеш-слотах між множиною master-вузлів (кожен зберігає лише частину загального набору даних); коли даних стає більше, адміністратор додає новий master, і Redis перерозподіляє частину слотів на нього без зупинки кластера (`redis-cli --cluster reshard`). **Ключове:** у Redis Cluster немає центрального координатора - усі вузли знають про розподіл слотів і перенаправляють запити один одному через відповідь `MOVED`, а читання можна масштабувати через репліки, тоді як запис завжди йде на master.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)ЗображенняRedis Cluster масштабується **горизонтально** за рахунок **розподілу ключів по множині вузлів (master'ів)**, де кожен вузол зберігає *частину загального набору даних*. Ось як це влаштовано: ### 1. Дані розбиваються на 16384 хеш-слоти - Redis Cluster ділить увесь простір ключів на **16384 логічних слоти**. - Кожен master-вузол отримує певну кількість цих слотів. Наприклад: ```javascript master1 → 0-5460 master2 → 5461-10922 master3 → 10923-16383 ``` - Коли клієнт записує чи читає ключ, Redis обчислює хеш (`CRC16(key) % 16384`) і визначає, у якому слоті він має бути. **Результат:** кожен вузол зберігає лише частину даних, а не весь обсяг. ### 2. Додавання нових вузлів Коли даних стає більше: - адміністратор **додає новий вузол (master)** до кластера, - і Redis **перерозподіляє частину слотів** з наявних master'ів на новий. Це робиться за допомогою команди: ```bash redis-cli --cluster reshard <host>:<port> ``` Під час міграції дані автоматично переносяться між вузлами, не вимагаючи зупинки кластера. ### 3. Балансування навантаження Кожен вузол зберігає приблизно однакову кількість слотів, тому навантаження за пам'яттю й операціями рівномірно розподілене. Якщо якийсь вузол перевантажений - слоти можна **перемістити** вручну чи автоматично. ### 4. Читання з реплік Кожен master має одну чи кілька реплік, які можна використовувати для **масштабування читання**. Таким чином: ```javascript master → запис replicas → читання ``` ### 5. Масштабування без єдиної точки відмови Redis Cluster не має центрального координатора: усі вузли знають про розподіл слотів і можуть перенаправляти запити один одному. Клієнт підключається до будь-якого вузла, і той за потреби повертає команду `MOVED`, вказуючи правильний вузол. ### Підсумок > Redis Cluster масштабується горизонтально, > тому що дозволяє додавати нові вузли, > перерозподіляючи хеш-слоти й дані між ними. Це забезпечує: - лінійне зростання продуктивності при додаванні серверів, - рівномірне навантаження, - і відмовостійкість за рахунок реплік.Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.