Ce face RENAME / RENAMENX
RENAME mută valoarea (și expirarea) de la key la newkey. Dacă newkey există deja, este suprascrisă, iar valoarea veche este ștearsă.
RENAMENX refuză redenumirea dacă newkey există, ca să nu pierzi date. Ambele dau eroare dacă cheia sursă nu există.
Parametri
| Parametru | Descriere |
|---|---|
key |
Cheia existentă. |
newkey |
Noul nume. |
Ce returnează
RENAME: OK. RENAMENX: 1 dacă a redenumit, 0 dacă newkey există deja.
Exemple
Exemplul 1: Publicarea atomică a unui raport
Construim raportul sub un nume temporar, apoi îl redenumim. Clienții văd fie raportul vechi, fie pe cel nou complet.
HSET raport:tmp vanzari 15400 comenzi 212
RENAME raport:tmp raport:octombrie
RENAME raport:tmp raport:noiembrie
Ieșire în redis-cli
127.0.0.1:6379> HSET raport:tmp vanzari 15400 comenzi 212
(integer) 2
127.0.0.1:6379> RENAME raport:tmp raport:octombrie
OK
127.0.0.1:6379> RENAME raport:tmp raport:noiembrie
(error) ERR no such key
Exemplul 2: RENAMENX protejează cheia existentă
Cheia profil:ana există, deci redenumirea nu se face.
SET profil:ana vechi
SET profil:nou proaspat
RENAMENX profil:nou profil:ana
GET profil:ana
Ieșire în redis-cli
127.0.0.1:6379> SET profil:ana vechi
OK
127.0.0.1:6379> SET profil:nou proaspat
OK
127.0.0.1:6379> RENAMENX profil:nou profil:ana
(integer) 0
127.0.0.1:6379> GET profil:ana
"vechi"
Greșeli frecvente
- Dacă
newkeyera o cheie mare,RENAMEo șterge implicit, ceea ce poate bloca serverul ca unDEL. - În Redis Cluster, ambele chei trebuie să fie în același hash slot (folosește hash tag-uri).
Comenzi înrudite
COPY: Copiază valoarea unei chei (de orice tip) la o cheie nouă, opțional în altă bază de date.DEL / UNLINK: Șterge una sau mai multe chei; UNLINK eliberează memoria în fundal, fără să blocheze serverul.EXISTS: Verifică dacă una sau mai multe chei există și întoarce câte dintre ele au fost găsite.
Întrebări & Exemple de Cod:
RENAME / RENAMENXAi o nelămurire despre utilizarea comenzii
RENAME / RENAMENXsau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.