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
offsetfoarte 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ă.