Використання команд scan в Redis на Linux
Redis, сховище структур даних у пам’яті з відкритим вихідним кодом, відоме своєю швидкістю та універсальністю як база даних типу “ключ-значення”. Однією з його потужних функцій є можливість інкрементального ітераційного перегляду наборів даних за допомогою команд scan. Це особливо корисно при роботі з великими наборами даних, оскільки дозволяє ефективно шукати дані, не перевантажуючи сервер. Для користувачів на виділеному сервері Linux використання команд scan в Redis може підвищити продуктивність роботи з даними за рахунок точної, оптимізованої для ресурсів обробки наборів даних. У цій статті ми розглянемо, як ефективно використовувати команди scan в Redis в середовищі Linux, пропонуючи детальні приклади і кращі практики для управління і пошуку даних в масштабі…
Що таке команди scan?
Команди scan у Redis надають можливість ітеративно переглядати ключі, набори, хеші та відсортовані набори у неблокуючий спосіб. На відміну від команди KEYS, яка може бути небезпечною для великих наборів даних, оскільки повертає всі відповідні ключі одразу, команди scan повертають невелику кількість елементів за раз. Це мінімізує вплив на продуктивність і дозволяє виконувати інкрементні ітерації.
Команди scan ключів
- SCAN: Перебирає клавіші у просторі клавіш.
- SSCAN: Перебирає елементи у наборі.
- HSCAN: Перебирає поля та значення у хеші.
- ZSCAN: Перебирає члени та оцінки у відсортованому наборі.
Базовий синтаксис команд scan
Кожна команда scan має схожий синтаксис:
- курсор: Ціле число, яке представляє позицію, з якої слід почати scan. Щоб почати нове scan, використовуйте 0.
- Шаблон збігу: (необов’язково) Шаблон для фільтрації повернених ключів. Підтримує шаблони у стилі glob.
- COUNT кількість: (необов’язково) Підказка Redis про те, скільки елементів повертати на кожній ітерації.
Встановлення Redis у Linux
Для CentOS/RHEL використовуйте:
Після встановлення запустіть сервер Redis:
Підключення до Redis
Відкрийте термінал і підключіться до вашого екземпляра Redis за допомогою Redis CLI:
Тепер ви можете виконувати команди Redis в CLI.
Використання команди SCAN
Приклад 1: Базове scan
Щоб отримати всі ключі в базі даних Redis, ви можете скористатися командою:
Ця команда поверне курсор і список ключів.
Приклад 2: Використання MATCH для фільтрації ключів
Якщо ви хочете знайти ключі, які відповідають певному шаблону, наприклад, ключі, що починаються з “user:”, ви можете скористатися цією командою:
Ця команда повертає лише ключі, які починаються з “user:”.
Приклад 3: Вказівка COUNT
Щоб підказати, скільки ключів Redis має повертати на кожній ітерації, ви можете вказати кількість:
Це буде спроба повернути приблизно 10 ключів. Зауважте, що фактична кількість повернених ключів може бути меншою.
Приклад 4: Перебір усіх ключів
Щоб перебрати всі ключі за кілька ітерацій, вам потрібно відстежувати курсор, який повертається. Ось простий приклад сценарію командного рядка:
cursor=0
while true; do
result=$(redis-cli SSCAN myset $cursor MATCH apple:*)
echo "$result" # Обробляємо результат за потребою
cursor=$(echo "$result" | awk 'NR==1{print $1}') # Оновити курсор
if [[ "$cursor" == "0" ]]; then
break # Зупинитися, коли курсор повернеться до 0
fi
виконано
Використання команди SSCAN
Команда SSCAN використовується для ітераційного перебору елементів у множині. Її синтаксис подібний до синтаксису команди SCAN:
Приклад SSCAN
Крок 1: Створення набору та додавання елементів
Створимо множину з назвою myset і додамо до неї кілька елементів: