SETRANGE / GETRANGE în Redis & In-Memory Data Store

SETRANGE suprascrie o parte dintr-un string de la o poziție dată; GETRANGE citește doar o bucată din el.

Sintaxă comandă
SETRANGE key offset value
GETRANGE key start end

Ce face SETRANGE / GETRANGE

SETRANGE scrie value peste valoarea existentă, începând de la octetul offset (numărat de la 0). Dacă string-ul este mai scurt, Redis îl completează cu octeți zero (\x00).

GETRANGE (din Redis 2.4.0) întoarce octeții dintre start și end, ambele incluse. Indicii negativi numără de la final: -1 este ultimul octet.

Parametri

Parametru Descriere
offset Poziția (în octeți, de la 0) de unde începe scrierea.
value Textul care se scrie peste cel vechi.
start end Intervalul de citit, inclusiv; acceptă valori negative.

Ce returnează

SETRANGE: lungimea șirului după modificare. GETRANGE: bucata cerută (șir gol dacă intervalul e în afara valorii).

Exemple

Exemplul 1: Înlocuirea unui nume într-un mesaj

Scriem „Dan” de la poziția 6, peste „Ana”.

SET mesaj "Salut Ana"
SETRANGE mesaj 6 "Dan"
GET mesaj

Ieșire în redis-cli

127.0.0.1:6379> SET mesaj "Salut Ana"
OK
127.0.0.1:6379> SETRANGE mesaj 6 "Dan"
(integer) 9
127.0.0.1:6379> GET mesaj
"Salut Dan"

Exemplul 2: Citirea unei părți dintr-un cod

Din „Comanda 1042” luăm primul cuvânt și ultimele patru caractere.

SET titlu "Comanda 1042"
GETRANGE titlu 0 6
GETRANGE titlu -4 -1

Ieșire în redis-cli

127.0.0.1:6379> SET titlu "Comanda 1042"
OK
127.0.0.1:6379> GETRANGE titlu 0 6
"Comanda"
127.0.0.1:6379> GETRANGE titlu -4 -1
"1042"

Exemplul 3: Completarea cu octeți zero

Cheia nu există, deci primele 3 poziții sunt umplute cu \x00.

SETRANGE cod 3 "AB"
GET cod

Ieșire în redis-cli

127.0.0.1:6379> SETRANGE cod 3 "AB"
(integer) 5
127.0.0.1:6379> GET cod
"\x00\x00\x00AB"

Greșeli frecvente

  • Pozițiile sunt în octeți, nu în caractere: în texte cu diacritice poți tăia o literă la jumătate.
  • Un offset foarte mare alocă tot spațiul până acolo (maxim 512 MB) și poate bloca serverul pentru câteva momente.

Comenzi înrudite

  • APPEND / STRLEN: APPEND adaugă text la sfârșitul unei valori string; STRLEN întoarce lungimea valorii în octeți.
  • SET: Salvează o valoare text la o cheie, opțional cu expirare (EX/PX), doar dacă nu există (NX) sau doar dacă există (XX).
  • GET: Citește valoarea text salvată la o cheie; întoarce nil dacă cheia nu există.