Você pode fazer isso com um script Lua:
redis.call('SET', KEYS[2], redis.call('GET', KEYS[1])); return 1;
- KEYS1 é a chave de origem
- KEYS2 é a chave de destino
O exemplo abaixo usa SCRIPT LOAD para criar o script e o invoca usando EVALSHA passando os seguintes argumentos:
- O SHA1 retornado do carregamento do script
- um 2 para o número de chaves que serão passadas
- A chave de origem
- 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.