Redis
 sql >> Database >  >> NoSQL >> Redis

Redis:come impostare una chiave uguale al valore di un'altra chiave?

Puoi farlo con uno script Lua:

redis.call('SET', KEYS[2], redis.call('GET', KEYS[1])); return 1;
  1. KEYS1 è la chiave sorgente
  2. KEYS2 è la chiave di destinazione

L'esempio seguente utilizza SCRIPT LOAD per creare lo script e lo invoca utilizzando EVALSH passando i seguenti argomenti:

  1. Sha1 restituito dal caricamento dello script
  2. un 2 per il numero di chiavi che verranno passate
  3. La chiave sorgente
  4. La chiave di destinazione.

Uscita:

redis 127.0.0.1:6379> set src.key XXX
OK
redis 127.0.0.1:6379> get src.key
"XXX"
redis 127.0.0.1:6379> SCRIPT LOAD "redis.call('SET', KEYS[2], redis.call('GET', KEYS[1])); return 1;"
"1119c244463dce1ac3a19cdd4fda744e15e02cab"
redis 127.0.0.1:6379> EVALSHA 1119c244463dce1ac3a19cdd4fda744e15e02cab 2 src.key target.key
(integer) 1
redis 127.0.0.1:6379> get target.key
"XXX"

Sembra essere un sacco di cose rispetto al semplice fare un GET e poi un s SET, ma una volta caricato lo script (e memorizzato SHA1), puoi riutilizzarlo ripetutamente.