Skip to main content

Що таке database index у Redis?

У Redis database index (індекс бази даних) - це номер логічної бази даних усередині одного екземпляра Redis. Він не має стосунку до індексів у SQL (пошук за полями) - це проста система розділення ключів на незалежні логічні простори імен.

1. Що це означає

Redis-сервер може містити кілька баз даних, кожна з яких - це окрема хеш-таблиця (dictionary), що зберігає свої пари ключ → значення. Кожній базі присвоюється індекс - ціле число, починаючи з 0.

За замовчуванням:

javascript
db0, db1, db2, ...

Кількість баз задається параметром у конфігурації:

bash
databases 16

(за замовчуванням 16 баз: від db0 до db15).

2. Перемикання між базами

Redis не підтримує кілька баз в одному запиті. Клієнт підключається до сервера і обирає потрібну базу командою:

bash
SELECT <index>

Приклад:

bash
SELECT 0 SET key "value" SELECT 1 GET key

Результат: GET key поверне (nil), тому що ключ був записаний в іншу базу (db0 і db1 незалежні).

3. Як Redis зберігає ці бази

У пам'яті Redis кожна база даних (db) представлена окремою структурою:

javascript
dict *dict → сховище ключів і значень dict *expires → час життя ключів

Усі бази лежать у масиві:

javascript
server.db[0], server.db[1], ..., server.db[N-1]

Це повністю ізольовані хеш-таблиці. Видалення, TTL, LRU та інші механізми працюють окремо для кожної бази.

4. Важливі особливості

  • Бази не мають імен - лише числові індекси (0, 1, 2, …).
  • Бази не мають схеми - усі вони зберігають дані однаково.
  • Немає ізоляції за правами доступу: це не "багатокористувацькі бази", а просто логічні розділи.
  • При реплікації, збереженні (RDB/AOF) і очищенні (FLUSHALL) дані всіх баз обробляються разом.

5. Очищення й перегляд

Очистити конкретну базу:

bash
FLUSHDB

Очистити всі бази одразу:

bash
FLUSHALL

Переглянути активну базу:

bash
CLIENT INFO

(у полі db=N вказано, з якою базою працює клієнт).

6. Застосування

  • Розділення даних між застосунками чи оточеннями (наприклад, тест / прод).
  • Ізоляція тимчасових і постійних даних.
  • Зберігання різних типів кешу в різних базах.

Однак у продакшені зазвичай використовують одну базу (db0) і розділяють дані через префікси ключів (user:1, session:xyz, order:42), тому що кластери Redis підтримують лише одну базу (db0).

7. Підсумок

Database index у Redis - це:

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

Тобто:

javascript
db0 → dict ключів db1 → свій dict ключів db2 → свій dict ключів

Жодного стосунку до пошукових індексів SQL це не має - це логічні розділи пам'яті Redis, а не структури пришвидшеного пошуку.

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

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

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