当前位置: 首页 > 面试题库 >

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

柯河
2023-03-14
问题内容

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

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

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

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

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

 Y.Val() = X.Val()

问题答案:

您可以使用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),便可以重复使用它。



 类似资料:
  • 只有当我有一对像名字(值)数字(键)这样的代码时,这段代码才有效,但我遇到了像名字数字、数字这样的情况。它返回名称number1,名称number2

  • 我得到 我怀疑这是因为两者都是。

  • 我想将一个表中外键的确切数目引用到另一个表中的一个主键。例如,如果我们得到的确切数目为3,则一个主键应该只连接另一个表中的三个外键。我使用用户表存储用户详细信息,使用产品表存储用户购买产品的详细信息。如果用户表的主键是ID,而产品表的外键是通过用户ID列引用用户表的。一个用户id(用户表中的id列)应限制为产品表中三条记录的确切数量。简单地说,用户最多可以购买三个产品,不能超过三个。我可以在MyS

  • 问题内容: 假设我有一个名为的网站,并且在加载该网站的特定页面(例如页面链接)时,我想为另一个名为的网站设置Cookie ,然后将用户重定向到。 我的意思是,我想为其设置Cookie 并将用户重定向到。 我对其进行了测试,然后浏览器实际上从接收到了cookie ,但是在重定向请求到时,它没有发送该cookie 。正常吗 我们可以为其他域设置Cookie吗? 问题答案: 您不能为其他域设置Cooki

  • 问题内容: 我有类似的东西: 现在,我想用另一个JSON结构值替换“我的英语标题” 。 我尝试了: 但这是行不通的。任何人都可以给我提示如何在JSON变量中获取JSON值? 编辑:这是使用Jquery的上下文菜单,但是我在下面的所有解决方案中都遇到了问题,这是时候传递分隔符的字符串了。它不显示分隔符,因为它将字符串而不是仅字符串传递给对象。 例: 问题答案: 解决您的修改。尝试以下

  • 问题内容: 为简化起见,我有两个使用外键一对一关联的表,例如: 一个用户可能有很多动作,也可能没有。我需要一个sql select来返回在actions表中没有user_id值的用户id。 所以我需要一个返回用户ID 2(Smith)的SQL查询,因为外键值不包含ID 2 我尝试了以下SQL,但它返回了所有用户ID: 问题答案: