Які основні типи даних підтримує Redis?
Redis підтримує набір базових структур даних, кожна з яких реалізована максимально ефективно для зберігання й маніпулювання в оперативній пам'яті. Ці типи - основа всієї роботи Redis.
1. String (рядок)
Найпростіший і базовий тип даних - ключ-значення. Може зберігати текст, числа, JSON, бінарні дані, зображення тощо.
Приклад:
SET user:name "Alice"
GET user:nameМожна виконувати арифметику:
INCR counter
DECRBY counter 5Особливість: рядок у Redis може бути до 512 МБ.
2. List (список)
Впорядкована колекція рядків, як черга чи стек. Додавання й видалення елементів можливе з обох боків.
Приклад:
LPUSH queue task1
RPUSH queue task2
LPOP queueЗастосування: черги задач, стрічки подій, чати.
3. Set (множина)
Невпорядкована множина унікальних елементів. Підтримує операції теорії множин: перетин, об'єднання, різницю.
Приклад:
SADD tags "redis" "database" "cache"
SMEMBERS tags
SISMEMBER tags "redis"Застосування: зберігання унікальних ID, підписників, тегів.
4. Sorted Set (відсортована множина)
Як Set, але кожен елемент має оцінку (score) - число, за яким елементи сортуються.
Приклад:
ZADD leaderboard 1500 "Alice" 1700 "Bob"
ZRANGE leaderboard 0 -1 WITHSCORESЗастосування: рейтинги, лідерборди, пріоритизація, топи.
5. Hash (хеш-таблиця)
Зберігає набір пар поле-значення під одним ключем. Нагадує міні-об'єкт чи JSON.
Приклад:
HSET user:100 name "Alice" age 25
HGET user:100 name
HGETALL user:100Застосування: профілі користувачів, конфігурації, метадані.
6. Bitmap (бітова карта)
Дозволяє зберігати й маніпулювати окремими бітами рядка.
Приклад:
SETBIT users_online 100 1
GETBIT users_online 100
BITCOUNT users_onlineЗастосування: трекінг активності, онлайн-статистика, булеві прапорці.
7. HyperLogLog
Структура для наближеного підрахунку унікальних елементів з мінімальним споживанням пам'яті (~12 КБ).
Приклад:
PFADD visitors "user1" "user2" "user3"
PFCOUNT visitorsЗастосування: лічильник унікальних користувачів, IP, подій.
8. Stream
Лог структурованих подій (як Kafka). Підтримує ID повідомлень, групи споживачів, підтвердження.
Приклад:
XADD events * user "Alice" action "login"
XREADGROUP GROUP g1 c1 COUNT 1 STREAMS events >Застосування: черги задач, події, мікросервіси, логування.
9. Geo (геодані)
Дозволяє зберігати координати й виконувати гео-запити (пошук найближчих точок, відстані).
Приклад:
GEOADD shops 30.5 50.4 "ShopA"
GEORADIUS shops 30.5 50.4 10 kmЗастосування: карти, логістика, трекінг, пошук "поруч зі мною".
Підсумок
| Тип | Призначення | Приклад використання |
|---|---|---|
| String | Рядки, числа, JSON | Кеш, токени, лічильники |
| List | Впорядковані колекції | Черги, стрічки |
| Set | Унікальні елементи | Підписки, теги |
| Sorted Set | Елементи з пріоритетами | Рейтинги, топи |
| Hash | Об'єкти, словники | Профілі, конфіги |
| Bitmap | Побітові прапорці | Онлайн-активність |
| HyperLogLog | Підрахунок унікальних | Аналітика |
| Stream | Потік подій | Черги, логування |
| Geo | Геокоординати | Пошук за відстанню |
Redis - не просто key-value-сховище, а набір високоефективних структур даних у пам'яті, які можна комбінувати для будь-яких сценаріїв - від кешу до потокової аналітики.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.