Testați-vă abilitățile cu toate serviciile noastre de găzduire și beneficiați de 15% reducere!

Utilizați codul la finalizarea comenzii:

Skills
04.11.2024

Utilizarea comenzilor Scan în Redis pe Linux

Redis, un magazin de structuri de date în memorie, open-source, este cunoscut pentru viteza și versatilitatea sa ca bază de date cheie-valoare. Una dintre caracteristicile sale puternice este capacitatea de a parcurge incremental seturile de date folosind comenzi de scanare. Acest lucru este deosebit de util atunci când aveți de-a face cu seturi mari de date, deoarece permite recuperarea eficientă a datelor fără a copleși serverul. Pentru utilizatorii de pe un server Linux dedicat, utilizarea comenzilor de scanare în Redis poate îmbunătăți performanța gestionării datelor, permițând procesarea precisă și optimizată a seturilor de date din punct de vedere al resurselor. În acest articol, vom explora modul de utilizare eficientă a comenzilor de scanare în Redis în cadrul unui mediu Linux, oferind exemple detaliate și cele mai bune practici pentru gestionarea și recuperarea datelor la scară..

Ce sunt comenzile de scanare?

Comenzile de scanare din Redis oferă o modalitate de a itera peste chei, seturi, hașuri și seturi sortate într-un mod neblocat. Spre deosebire de comanda KEYS, care poate fi periculoasă pentru seturile mari de date, deoarece returnează toate cheile potrivite deodată, comenzile de scanare returnează un număr mic de elemente odată. Acest lucru minimizează impactul asupra performanței și permite iterația incrementală

Comenzi de scanare a cheilor

  1. SCAN: Iteră prin cheile din spațiul cheilor.
  2. SSCAN: Iteră prin elementele unui set.
  3. HSCAN: trece prin câmpurile și valorile unui hash.
  4. ZSCAN: Iteră prin membrii și scorurile unui set sortat.

Sintaxa de bază a comenzilor de scanare

Fiecare comandă de scanare are o sintaxă similară

SCAN cursor [MATCH pattern] [COUNT count]
  • cursor: Un număr întreg care reprezintă poziția de la care se începe scanarea. Pentru a începe o scanare nouă, utilizați 0.
  • MATCH pattern: (opțional) Un model pentru filtrarea cheilor returnate. Suportă modele de tip glob.
  • COUNT count: (opțional) Un indiciu pentru Redis cu privire la câte elemente să returneze în fiecare iterație.

Instalarea Redis pe Linux

Înainte de a trece la utilizarea comenzilor de scanare, asigurați-vă că Redis este instalat pe sistemul Linux. Pentru cei care utilizează un server dedicat Debian, instalarea Redis este simplă și poate spori capacitatea serverului de a gestiona eficient procesarea datelor în memorie. Iată cum să instalați Redis pe un sistem bazat pe Debian, asigurând un mediu stabil optimizat pentru operațiuni de înaltă performanță.

Urmând acești pași, veți configura Redis într-un mod care să valorifice resursele și stabilitatea serverului Debian dedicat, ideal pentru sarcini robuste de prelucrare a datelor

sudo apt update
sudo apt install redis-server

Pentru CentOS/RHEL, utilizați

sudo yum install redis

Odată instalat, porniți serverul Redis

sudo systemctl start redis

Conectarea la Redis

Deschideți terminalul și conectați-vă la instanța Redis utilizând Redis CLI

redis-cli

Acum puteți executa comenzi Redis în CLI

Utilizarea comenzii SCAN

Exemplul 1: SCAN de bază

Pentru a extrage toate cheile din baza de date Redis, puteți utiliza

SCAN 0

Această comandă va returna un cursor și o listă de chei

Exemplul 2: Utilizarea MATCH pentru filtrarea cheilor

Dacă doriți să găsiți cheile care corespund unui anumit model, cum ar fi cheile care încep cu “user:”, puteți utiliza

SCAN 0 MATCH username:*

Această comandă returnează numai cheile care încep cu “user:”

Exemplul 3: Specificarea COUNT

Pentru a sugera câte chei Redis ar trebui să returneze în fiecare iterație, puteți specifica un număr

SCAN 0 COUNT 10

Aceasta va încerca să returneze aproximativ 10 chei. Rețineți că numărul real returnat poate fi mai mic decât acesta

Exemplul 4: Iterarea prin toate cheile

Pentru a itera prin toate cheile în mai multe iterații, trebuie să țineți evidența cursorului returnat. Iată un exemplu simplu de script shell:

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

Utilizarea comenzii SSCAN

Comanda SSCAN este utilizată pentru a itera prin elementele unui set. Sintaxa sa este similară cu SCAN

SSCAN key cursor [MATCH pattern] [COUNT count]

Exemplu de SSCAN

Pasul 1: Crearea unui set și adăugarea de elemente

Să creăm un set numit myset și să îi adăugăm câteva elemente

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

Pasul 2: Utilizarea comenzii SSCAN

Acum că avem un set numit myset, putem utiliza comanda SSCAN pentru a parcurge elementele acestuia

  1. Comanda de bază SSCAN: Să presupunem că aveți un set numit “myset”. Pentru a parcurge elementele acestuia
    SSCAN myset 0
  2. Utilizarea MATCH: Pentru a filtra elementele dintr-un set pe baza unui model și a adăuga unele elemente care includ cuvântul “mango” și alte variante:
    SSCAN myset 0 MATCH mango:*
  3. Iterarea printr-un set: Puteți utiliza o buclă pentru a itera printr-un set :

#!/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

Rularea scriptului

  1. Salvați scriptul ca scan_myset.sh.
  2. Faceți-l executabil
    chmod +x scan_myset.sh
  3. Rulați scriptul
    ./scan_myset.sh

Utilizarea comenzilor HSCAN și ZSCAN

Comanda HSCAN

Comanda HSCAN itera prin câmpurile și valorile dintr-un hash

HSCAN key cursor [MATCH pattern] [COUNT count]

Comanda HSCAN este utilizată pentru iterarea prin câmpurile și valorile dintr-un hash

Pasul 1: Crearea unui Hash și adăugarea de câmpuri

  1. Creați un hash numit myhash și adăugați câteva câmpuri la acesta:
HSET myhash name "John Doe"
HSET myhash age "30"
HSET myhash occupation "Software Developer"
HSET myhash city "San Francisco"
HSET myhash country "USA"

Pasul 2: Utilizați HSCAN pentru a trece prin hash

  1. Utilizați comanda HSCAN pentru a trece prin câmpurile din myhash:
HSCAN myhash 0

Comanda ZSCAN

ZSCAN este o comandă Redis utilizată pentru a trece prin membrii unui set sortat în mod incremental. Aceasta vă permite să recuperați membrii împreună cu scorurile lor asociate într-un mod eficient și neblocat. Această comandă este deosebit de utilă pentru lucrul cu seturi sortate de dimensiuni mari, în cazul în care nu este practic să recuperați toți membrii deodată. Comanda ZSCAN itera prin membrii și scorurile unui set sortat

ZSCAN key cursor [MATCH pattern] [COUNT count]

Pasul 1: Crearea unui set sortat și adăugarea de membri

Să creăm un set sortat numit mysortedset și să adăugăm câțiva membri cu scoruri

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

Comanda de bază ZSCAN:Pentru a începe scanarea setului sortat, utilizați

ZSCAN mysortedset 0

Pasul 2: Utilizarea MATCH pentru filtrarea membrilor (opțional)

Dacă doriți să filtrați elementele returnate de ZSCAN, puteți utiliza opțiunea MATCH. De exemplu, pentru a găsi membri care conțin litera “e”, puteți rula

ZSCAN mysortedset 0 MATCH *e*

Cele mai bune practici pentru utilizarea comenzilor de scanare

  1. Utilizați SCAN în loc de KEYS: Evitați utilizarea comenzii KEYS în producție, deoarece poate bloca serverul. Utilizați SCAN pentru iterația fără blocare.
  2. Combinați cu MATCH și COUNT: Utilizați opțiunile MATCH și COUNT pentru a îmbunătăți performanța și a limita setul de rezultate.
  3. Gestionați seturi mari de date: Atunci când aveți de-a face cu seturi mari de date, procesați cheile în loturi utilizând cursori pentru a gestiona eficient memoria.
  4. Testați în dezvoltare: Testați întotdeauna logica de scanare într-un mediu de dezvoltare pentru a vă asigura că se comportă conform așteptărilor înainte de implementarea în producție.

Concluzie

Utilizarea comenzilor de scanare în Redis vă permite să iterați eficient prin seturi mari de date într-un mediu Linux fără a vă copleși serverul. Înțelegând cum să utilizați SCAN, SSCAN, HSCAN și ZSCAN, puteți gestiona și prelua eficient datele din Redis. Aceste comenzi sunt esențiale pentru construirea de aplicații scalabile care necesită procesarea datelor în timp real. Pentru mai multe informații și utilizare detaliată, consultați documentația oficială Redis și experimentați cu aceste comenzi în mediul Redis

Testați-vă abilitățile cu toate serviciile noastre de găzduire și beneficiați de 15% reducere!

Utilizați codul la finalizarea comenzii:

Skills