Ce face MSET / MGET
MSET scrie mai multe perechi cheie–valoare deodată, atomic: niciun client nu vede doar o parte dintre ele scrise. MGET citește mai multe chei și întoarce valorile în aceeași ordine în care le-ai cerut.
MSETNX scrie toate cheile doar dacă NICIUNA nu există; dacă măcar una există, nu scrie nimic. MGET există din Redis 1.0.0, MSET și MSETNX din 1.0.1.
Parametri
| Parametru | Descriere |
|---|---|
key value ... |
Perechile de scris (pentru MSET / MSETNX). |
key ... |
Cheile de citit (pentru MGET). |
Ce returnează
MSET: mereu OK. MGET: o listă cu valorile, cu (nil) pentru cheile care lipsesc sau nu sunt string. MSETNX: 1 dacă a scris, 0 dacă nu.
Exemple
Exemplul 1: Setări de aplicație scrise și citite deodată
Cheia setari:tema nu există, deci locul ei din răspuns este (nil).
MSET setari:limba ro setari:moneda lei setari:oras Iasi
MGET setari:limba setari:moneda setari:tema
Ieșire în redis-cli
127.0.0.1:6379> MSET setari:limba ro setari:moneda lei setari:oras Iasi
OK
127.0.0.1:6379> MGET setari:limba setari:moneda setari:tema
1) "ro"
2) "lei"
3) (nil)
Exemplul 2: MSETNX: totul sau nimic
Prima comandă reușește. A doua nu scrie nimic, pentru că stoc:mouse există deja, deci nici stoc:monitor nu este creată.
MSETNX stoc:tastatura 12 stoc:mouse 30
MSETNX stoc:mouse 5 stoc:monitor 4
MGET stoc:mouse stoc:monitor
Ieșire în redis-cli
127.0.0.1:6379> MSETNX stoc:tastatura 12 stoc:mouse 30
(integer) 1
127.0.0.1:6379> MSETNX stoc:mouse 5 stoc:monitor 4
(integer) 0
127.0.0.1:6379> MGET stoc:mouse stoc:monitor
1) "30"
2) (nil)
Greșeli frecvente
- În Redis Cluster, cheile dintr-un
MSET/MGETtrebuie să fie în același hash slot (de exemplu cu hash tag-uri:{user:7}:nume,{user:7}:oras), altfel primești eroareaCROSSSLOT. MSETnu acceptă expirare. Pentru chei cu TTL foloseșteSET ... EXpentru fiecare sau un pipeline.