Изпробвайте уменията си за всички наши хостинг услуги и получете 15% отстъпка!

Използвайте код на касата:

Skills
04.11.2024

Използване на командите за сканиране в Redis под Linux

Redis, хранилище на структури от данни с отворен код в паметта, е известно със своята скорост и гъвкавост като база данни ключ-стойност. Една от мощните му функции е възможността за инкрементална итерация през набори от данни с помощта на команди за сканиране. Това е особено полезно при работа с големи масиви от данни, тъй като позволява ефективно извличане на данни, без да се претоварва сървърът. За потребителите на специализиран Linux сървър използването на команди за сканиране в Redis може да подобри производителността на работата с данни, като позволи прецизна и оптимизирана по отношение на ресурсите обработка на набори от данни. В тази статия ще разгледаме как ефективно да използваме командите за сканиране в Redis в среда на Linux, като предлагаме подробни примери и най-добри практики за управление и извличане на данни в мащаба на.

Какво представляват командите за сканиране?

Командите за сканиране в Redis осигуряват начин за итерация над ключове, множества, хешове и сортирани множества по неблокиращ начин. За разлика от командата KEYS, която може да бъде опасна за големи масиви от данни, тъй като връща всички съвпадащи ключове наведнъж, командите за сканиране връщат малък брой елементи наведнъж. Това свежда до минимум въздействието върху производителността и позволява инкрементална итерация

Команди за сканиране на ключове

  1. SCAN: Итерира през ключовете в пространството от ключове.
  2. SSCAN: Итервюира елементи в множество.
  3. HSCAN: Итерира през полета и стойности в хеш.
  4. ZSCAN: Преминава през членове и резултати в сортирано множество.

Основен синтаксис на командите за сканиране

Всяка команда за сканиране има подобен синтаксис

SCAN cursor [MATCH pattern] [COUNT count]
#
  • курсор: Цяло число, което представлява позицията, от която да започне сканирането. За да започнете ново сканиране, използвайте 0.
  • MATCH pattern: (по избор) Шаблон за филтриране на върнатите ключове. Поддържа шаблони в стил glob.
  • COUNT count (брой): (незадължително) Указание към Redis колко елемента да бъдат върнати при всяка итерация.

Инсталиране на Redis в Linux

Преди да пристъпим към използване на командите за сканиране, уверете се, че Redis е инсталиран на вашата Linux система. За тези, които използват Debian Dedicated Server, инсталирането на Redis е лесно и може да подобри възможностите на сървъра за ефективна обработка на данни в паметта. Ето как да инсталирате Redis на система, базирана на Debian, като си осигурите стабилна среда, оптимизирана за високопроизводителни операции.

Като следвате тези стъпки, ще настроите Redis по начин, който използва ресурсите и стабилността на вашия специализиран сървър Debian, идеален за надеждни задачи за обработка на данни

sudo apt update
sudo apt install redis-server
#

За CentOS/RHEL използвайте

sudo yum install redis

След като инсталирате, стартирайте сървъра Redis

sudo systemctl start redis

Свързване с Redis

Отворете терминала и се свържете с вашата инстанция на Redis, като използвате Redis CLI

redis-cli

Сега можете да изпълнявате команди на Redis в CLI

Използване на командата SCAN

Пример 1: Основен SCAN

За да извлечете всички ключове в базата данни Redis, можете да използвате

SCAN 0#

Тази команда ще върне курсор и списък с ключове

Пример 2: Използване на MATCH за филтриране на ключове

Ако искате да намерите ключове, които отговарят на определен модел, например ключове, които започват с “user:”, можете да използвате

SCAN 0 MATCH username:*
#

Тази команда връща само ключовете, които започват с “user:”

Пример 3: Задаване на COUNT

За да подскажете колко ключа трябва да върне Redis при всяка итерация, можете да зададете брой

SCAN 0 COUNT 10

Това ще се опита да върне приблизително 10 ключа. Имайте предвид, че действителният брой върнати ключове може да е по-малък от този

Пример 4: Итериране през всички ключове

За да преминете през всички ключове в няколко итерации, трябва да следите върнатия курсор. Ето един прост пример за шел скрипт:

cursor=0
while true; do
result=$(redis-cli SSCAN myset $cursor MATCH apple:*)
echo "$result" # Process the result as needed
cursor=$(echo "$result" | awk 'NR==1{print $1}') # Update the cursor
if [[ "$cursor" == "0" ]]; then
break  # Stop when the cursor is back to 0
fi
done

Използване на командата SSCAN

Командата SSCAN се използва за итерация през елементите на дадено множество. Синтаксисът ѝ е подобен на този на SCAN

SSCAN key cursor [MATCH pattern] [COUNT count]

Пример за SSCAN

Стъпка 1: Създаване на набор и добавяне на елементи

Нека да създадем множество, наречено myset, и да добавим някои елементи към него

SADD myset "apple"
SADD myset "banana"
SADD myset "cherry"
SADD myset "date"
SADD myset "elderberry"

Стъпка 2: Използване на командата SSCAN

Сега, след като имаме набор с име myset, можем да използваме командата SSCAN, за да преминем през неговите елементи

  1. Основна команда SSCAN:Да предположим, че имате множество, наречено “myset”. За да прегледате елементите му
    SSCAN myset 0#
  2. Използване на MATCH: За да филтрирате елементите в множеството въз основа на шаблон и да добавите някои елементи, които включват думата “манго” и други варианти:
    SSCAN myset 0 MATCH mango:*#
  3. Итериране през множество: Можете да използвате цикъл, за да итерирате през множество :

#!/bin/bash
cursor=0
echo "Scanning through myset:"
while true; do
# Scan the set
result=$(redis-cli SSCAN myset $cursor)
# Print the elements returned by SSCAN
echo "$result"
# Update the cursor for the next iteration
cursor=$(echo "$result" | awk 'NR==1{print $1}')
# Break the loop if cursor is back to 0
if [[ "$cursor" == "0" ]]; then
break
fi
done

Изпълнение на скрипта

  1. Запишете скрипта като scan_myset.sh.
  2. Направете го изпълним
    chmod +x scan_myset.sh
  3. Изпълнете скрипта
    ./scan_myset.sh

Използване на командите HSCAN и ZSCAN

Команда HSCAN

Командата HSCAN итерира през полетата и стойностите в хеша

HSCAN key cursor [MATCH pattern] [COUNT count]

Командата HSCAN се използва за итерация през полета и стойности в хеш

Стъпка 1: Създаване на хеш и добавяне на полета

  1. Създайте хеш с име myhash и добавете няколко полета към него:
HSET myhash name "John Doe"
HSET myhash age "30"
HSET myhash occupation "Software Developer"
HSET myhash city "San Francisco"
HSET myhash country "USA"

Стъпка 2: Използвайте HSCAN за итерация през хеша

  1. Използвайте командата HSCAN, за да преминете през полетата в myhash:
HSCAN myhash 0#

Команда ZSCAN

ZSCAN е команда на Redis, която се използва за инкрементално преминаване през членовете на сортирано множество. Тя ви позволява да извличате членовете заедно със свързаните с тях оценки по ефективен и неблокиращ начин. Тази команда е особено полезна за работа с големи сортирани множества, при които извличането на всички членове наведнъж може да се окаже непрактично. Командата ZSCAN итерира през членовете и оценките в сортирано множество

ZSCAN key cursor [MATCH pattern] [COUNT count]
#

Стъпка 1: Създаване на сортирано множество и добавяне на членове

Нека да създадем сортирано множество, наречено mysortedset , и да добавим някои членове с резултати

ZADD mysortedset 1 "apple"
ZADD mysortedset 2 "banana"
ZADD mysortedset 3 "cherry"

Основна команда ZSCAN:За да започнете сканирането на сортираното множество, използвайте

ZSCAN mysortedset 0

Стъпка 2: Използване на MATCH за филтриране на членовете (по избор)

Ако искате да филтрирате членовете, върнати от ZSCAN, можете да използвате опцията MATCH. Например, за да намерите членове, които съдържат буквата “e”, можете да изпълните

ZSCAN mysortedset 0 MATCH *e*#

Най-добри практики за използване на командите за сканиране

  1. Използвайте SCAN вместо KEYS: Избягвайте да използвате командата KEYS в производството, тъй като тя може да блокира сървъра. Използвайте SCAN за неблокираща итерация.
  2. Комбинирайте с MATCH и COUNT: Използвайте опциите MATCH и COUNT, за да подобрите производителността и да ограничите набора от резултати.
  3. Работа с големи масиви от данни: Когато работите с големи масиви от данни, обработвайте ключовете на партиди, като използвате курсори, за да управлявате ефективно паметта.
  4. Тествайте в процеса на разработка: Винаги тествайте логиката си за сканиране в среда за разработка, за да се уверите, че тя се държи според очакванията, преди да я внедрите в производството.

Заключение

Използването на командите за сканиране в Redis ви позволява ефективно да обработвате големи масиви от данни в среда на Linux, без да претоварвате сървъра си. Като разбирате как да използвате SCAN, SSCAN, HSCAN и ZSCAN, можете ефективно да управлявате и извличате данни от Redis. Тези команди са от съществено значение за изграждането на мащабируеми приложения, които изискват обработка на данни в реално време. За повече информация и подробно описание на употребата, направете справка с официалната документация на Redis и експериментирайте с тези команди във вашата среда на Redis

Изпробвайте уменията си за всички наши хостинг услуги и получете 15% отстъпка!

Използвайте код на касата:

Skills