一尘不染

Redis:如何设置一个键等于另一个键的值?

redis

REDIS中有任何快速命令可以让我执行以下操作吗?

我想将键Y的值设置为等于键X的值。

我如何从Redis Client执行此操作。

我使用标准的Redis-cli客户端。

基本上,我正在寻找以下等效项-

 Y.Val() = X.Val()

阅读 359

收藏
2020-06-20

共1个答案

一尘不染

您可以使用Lua脚本执行此操作:

redis.call('SET', KEYS[2], redis.call('GET', KEYS[1])); return 1;
  1. KEYS1是源密钥
  2. KEYS2是目标键

下面的示例使用SCRIPT LOAD创建脚本,并使用EVALSHA传递以下参数来调用该脚本:

  1. 从脚本加载返回的SHA1
  2. 传递的密钥数为2
  3. 源密钥
  4. 目标键。

输出:

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"

与仅执行GET和s SET相比,它确实有很多东西,但是一旦加载了脚本(并存储了SHA1),便可以重复使用它。

2020-06-20