Що таке Set у Redis?
Set у Redis - це невпорядкована множина унікальних рядкових значень. Кожен елемент - це Redis String, але без повторів і без збереження порядку.
Основні властивості
- Усі елементи унікальні (повтор не зберігається).
- Порядок елементів не фіксований.
- Підтримуються швидкі операції над множинами - об'єднання, перетин, різниця.
- Підходить для зберігання унікальних значень: ID, тегів, користувачів тощо.
Приклад
bash
SADD users "anna" "ivan" "maria"
SADD users "ivan"
SMEMBERS usersРезультат:
javascript
1) "anna"
2) "ivan"
3) "maria"Друге додавання "ivan" проігноровано - елемент уже існує.
Основні команди
| Команда | Опис |
|---|---|
SADD key value [value ...] | додати елемент(и) |
SREM key value [value ...] | видалити елемент(и) |
SMEMBERS key | отримати всі елементи множини |
SISMEMBER key value | перевірити, чи є значення |
SCARD key | кількість елементів |
SPOP key [count] | видалити й повернути випадковий елемент |
SRANDMEMBER key [count] | отримати випадковий елемент без видалення |
SUNION key [key ...] | об'єднання множин |
SINTER key [key ...] | перетин множин |
SDIFF key [key ...] | різниця множин |
Приклад об'єднання й перетину
bash
SADD groupA "anna" "maria"
SADD groupB "maria" "ivan"
SUNION groupA groupB
SINTER groupA groupBРезультат:
javascript
SUNION → "anna", "maria", "ivan"
SINTER → "maria"Внутрішня будова
Redis зберігає множини у двох форматах:
- intset - якщо всі елементи є цілими числами і їх небагато (за замовчуванням до 512 елементів).
- hashtable - якщо елементів більше чи містяться рядки.
intset економить пам'ять, hashtable забезпечує швидку вставку й пошук.
Застосування
- Зберігання унікальних ID користувачів чи токенів.
- Списки підписників чи учасників без дублікатів.
- Швидкі перевірки належності (
SISMEMBER). - Рекомендаційні системи через перетин множин (
SINTER). - Підрахунок унікальних відвідувань чи дій (
SCARD).
Коротка відповідь
Для співбесідиPremium
Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.