Що таке database index у Redis?
У Redis database index (індекс бази даних) - це номер логічної бази даних усередині одного екземпляра Redis. Він не має стосунку до індексів у SQL (пошук за полями) - це проста система розділення ключів на незалежні логічні простори імен.
1. Що це означає
Redis-сервер може містити кілька баз даних, кожна з яких - це окрема хеш-таблиця (dictionary), що зберігає свої пари ключ → значення.
Кожній базі присвоюється індекс - ціле число, починаючи з 0.
За замовчуванням:
db0, db1, db2, ...Кількість баз задається параметром у конфігурації:
databases 16(за замовчуванням 16 баз: від db0 до db15).
2. Перемикання між базами
Redis не підтримує кілька баз в одному запиті. Клієнт підключається до сервера і обирає потрібну базу командою:
SELECT <index>Приклад:
SELECT 0
SET key "value"
SELECT 1
GET keyРезультат:
GET key поверне (nil), тому що ключ був записаний в іншу базу (db0 і db1 незалежні).
3. Як Redis зберігає ці бази
У пам'яті Redis кожна база даних (db) представлена окремою структурою:
dict *dict → сховище ключів і значень
dict *expires → час життя ключівУсі бази лежать у масиві:
server.db[0], server.db[1], ..., server.db[N-1]Це повністю ізольовані хеш-таблиці. Видалення, TTL, LRU та інші механізми працюють окремо для кожної бази.
4. Важливі особливості
- Бази не мають імен - лише числові індекси (
0,1,2, …). - Бази не мають схеми - усі вони зберігають дані однаково.
- Немає ізоляції за правами доступу: це не "багатокористувацькі бази", а просто логічні розділи.
- При реплікації, збереженні (RDB/AOF) і очищенні (
FLUSHALL) дані всіх баз обробляються разом.
5. Очищення й перегляд
Очистити конкретну базу:
FLUSHDBОчистити всі бази одразу:
FLUSHALLПереглянути активну базу:
CLIENT INFO(у полі db=N вказано, з якою базою працює клієнт).
6. Застосування
- Розділення даних між застосунками чи оточеннями (наприклад, тест / прод).
- Ізоляція тимчасових і постійних даних.
- Зберігання різних типів кешу в різних базах.
Однак у продакшені зазвичай використовують одну базу (db0) і розділяють дані через префікси ключів (user:1, session:xyz, order:42), тому що кластери Redis підтримують лише одну базу (db0).
7. Підсумок
Database index у Redis - це:
- просто номер логічної бази,
- усередині одного екземпляра Redis,
- що вказує, у якій хеш-таблиці зберігаються ключі.
Тобто:
db0 → dict ключів
db1 → свій dict ключів
db2 → свій dict ключівЖодного стосунку до пошукових індексів SQL це не має - це логічні розділи пам'яті Redis, а не структури пришвидшеного пошуку.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.