Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Що таке Set у Redis?». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)Set у Redis - невпорядкована множина унікальних рядкових значень: усі елементи унікальні (повтор не зберігається), порядок не фіксований, і підтримуються швидкі операції над множинами - об'єднання (`SUNION`), перетин (`SINTER`), різниця (`SDIFF`). **Ключове:** внутрішньо зберігається як `intset` (для чисел, до 512 елементів за замовчуванням) чи `hashtable` (для рядків чи більшої кількості елементів); підходить для унікальних ID, тегів, підписників і швидких перевірок належності через `SISMEMBER`.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення**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`).Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.