sql >> Base de Datos >  >> NoSQL >> Redis

Redis:¿Cómo establecer una clave igual al valor de otra clave?

Puedes hacer esto con un script de Lua:

redis.call('SET', KEYS[2], redis.call('GET', KEYS[1])); return 1;
  1. KEYS1 es la clave de origen
  2. KEYS2 es la clave objetivo

El siguiente ejemplo usa SCRIPT LOAD para crear el script y lo invoca usando EVALSHA pasando los siguientes argumentos:

  1. El SHA1 devuelto de la carga del script
  2. un 2 para el número de llaves que se pasarán
  3. La clave de origen
  4. La clave de destino.

Salida:

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"

Parece ser un montón de cosas en comparación con simplemente hacer GET y luego SET, pero una vez que haya cargado el script (y memorizado el SHA1), puede reutilizarlo repetidamente.