Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Redis:Como definir uma chave igual ao valor de outra chave?


Você pode fazer isso com um script Lua:
redis.call('SET', KEYS[2], redis.call('GET', KEYS[1])); return 1;
  1. KEYS1 é a chave de origem
  2. KEYS2 é a chave de destino

O exemplo abaixo usa SCRIPT LOAD para criar o script e o invoca usando EVALSHA passando os seguintes argumentos:
  1. O SHA1 retornado do carregamento do script
  2. um 2 para o número de chaves que serão passadas
  3. A chave de origem
  4. A chave de destino.

Saída:
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 um monte de coisas comparado a simplesmente fazer um GET e depois SET, mas uma vez que você carregou o script (e memorizou o SHA1), você pode reutilizá-lo repetidamente.