Skip to main content

Що таке реплікація в Redis? Навіщо потрібна реплікація?

Реплікація в Redis - це механізм, за якого дані автоматично копіюються з одного сервера (master) на інші сервери (репліки). Головна мета - резервування, масштабування читання й відмовостійкість.

1. Що таке реплікація

Redis дозволяє створити ієрархію серверів:

javascript
MasterReplica1 Replica2
  • Master - головний вузол, куди виконуються всі операції запису (SET, DEL, INCR тощо).
  • Replica (Slave) - копія master, яка отримує всі його оновлення і підтримує синхронізований стан.

Репліка оновлюється в реальному часі - усі зміни, що відбуваються на master, автоматично транслюються на репліки.

2. Навіщо потрібна реплікація

1. Відмовостійкість (fault tolerance)

Якщо master виходить з ладу, репліка містить його повну копію й може швидко стати новим master. Це дозволяє уникнути втрати даних і просто перемкнути клієнтів на новий вузол.

2. Масштабування читання

Читання (GET, HGETALL, ZRANGE) можна розподілити між кількома репліками, знижуючи навантаження на master. Так досягається горизонтальне масштабування за операціями читання.

3. Резервне копіювання

Репліка може зберігати дані на диск незалежно від master (RDB/AOF), що створює безпечну резервну копію без навантаження на основну систему.

3. Як працює реплікація в Redis

Первинна синхронізація

Коли нова репліка підключається до master:

  1. Репліка надсилає команду:
javascript
REPLICAOF <master_ip> <port>
  1. Master створює RDB-знімок (snapshot) і надсилає його репліці.
  2. Репліка завантажує цей знімок у пам'ять і починає застосовувати команди, що надходять після моменту знімка.

Постійна (інкрементальна) синхронізація

Після початкового завантаження master надсилає репліці всі нові команди запису в тому самому порядку, що й виконує сам. Це підтримує повний збіг стану.

При тимчасових розривах

Redis використовує реплікаційний буфер (replication backlog) - кільцевий журнал останніх змін. Якщо репліка короткочасно втрачає зв'язок, вона може наздогнати master, зчитавши недостатні команди з цього журналу, без повної пересинхронізації.

4. Типи реплікації

ТипОпис
Асинхронна (за замовчуванням)master не чекає підтвердження репліки, максимально швидка, але можлива втрата даних при збої
Напівсинхронна (PSYNC2)репліка може підтверджувати отримання даних, підвищуючи надійність

5. Налаштування

У конфігураційному файлі репліки (redis.conf):

bash
replicaof 192.168.1.10 6379

Перевірка статусу:

bash
INFO replication

Покаже:

javascript
role:master connected_slaves:2 slave0:ip=...,state=online

6. Перемикання ролей

Репліка може стати master:

bash
REPLICAOF NO ONE

Використовується при аварійному перемиканні чи в автоматичних кластерах (наприклад, Redis Sentinel чи Redis Cluster).

7. Реплікація й продуктивність

  • Реплікація не сповільнює master, оскільки вона асинхронна.
  • Репліки читають дані зі своєї пам'яті, не заважаючи master.
  • Навантаження на мережу зростає за великої кількості реплік, тому використовується обмеження repl-backlog-size.

8. Інструменти для керування

  • Redis Sentinel - система автоматичного failover: стежить за master і призначає нову репліку master при збої.
  • Redis Cluster - розподілена система, де кожен вузол може бути master зі своїми репліками.

9. Підсумок

Реплікація в Redis - це:

  • механізм копіювання даних від master до реплік,
  • що забезпечує надійність, масштабування читання й стійкість до збоїв.

Вона потрібна, щоб Redis лишався доступним і узгодженим навіть за навантажень чи аварій - без єдиної точки відмови.

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

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

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