Използване на командите за 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.
- MATCH pattern: (незадължително) Модел за филтриране на върнатите ключове. Поддържа шаблони в стил glob.
- COUNT 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: Итериране през всички ключове
За да преминете през всички клавиши в няколко итерации, трябва да следите върнатия курсор. Ето един прост пример за шел скрипт:
курсор=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
done
Използване на командата SSCAN
Командата SSCAN се използва за итериране на елементи от дадено множество. Синтаксисът ѝ е подобен на този на SCAN:
Пример за SSCAN
Стъпка 1: Създаване на набор и добавяне на елементи
Нека да създадем множество, наречено myset, и да добавим някои елементи към него: