Skip to main content

Що таке 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 зберігає множини у двох форматах:

  1. intset - якщо всі елементи є цілими числами і їх небагато (за замовчуванням до 512 елементів).
  2. hashtable - якщо елементів більше чи містяться рядки.

intset економить пам'ять, hashtable забезпечує швидку вставку й пошук.

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

  • Зберігання унікальних ID користувачів чи токенів.
  • Списки підписників чи учасників без дублікатів.
  • Швидкі перевірки належності (SISMEMBER).
  • Рекомендаційні системи через перетин множин (SINTER).
  • Підрахунок унікальних відвідувань чи дій (SCARD).

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

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

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