Redis
 sql >> Base de données >  >> NoSQL >> Redis

Redis :Comment définir une clé égale à la valeur d'une autre clé ?

Vous pouvez le faire avec un script Lua :

redis.call('SET', KEYS[2], redis.call('GET', KEYS[1])); return 1;
  1. KEYS1 est la clé source
  2. KEYS2 est la clé cible

L'exemple ci-dessous utilise SCRIPT LOAD pour créer le script et l'invoque en utilisant EVALSHA en passant les arguments suivants :

  1. Le SHA1 renvoyé par le chargement du script
  2. un 2 pour le nombre de clés qui seront transmises
  3. La clé source
  4. La clé cible.

Sortie :

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"

Cela semble être beaucoup de choses par rapport à la simple réalisation d'un GET puis d'un SET, mais une fois que vous avez chargé le script (et mémorisé le SHA1), vous pouvez le réutiliser à plusieurs reprises.