【问题标题】:Duplicate a key in redis在redis中复制一个key
【发布时间】:2021-04-23 08:35:29
【问题描述】:

我可以使用连接的redis-cli复制密钥吗,redis中是否有预定义的命令?

将 FSS_SYSAGENT 复制到 FSS_SYSAGENTDuplicate。

10.44.112.213:6403> hgetall FSS_SYSAGENT

1) “SYSTEM_01” 2) "{\"端口\":\"4407\",\"ipAddress\":\"10.44.112.213\",\"symbolicName\":\"SYSTEM_01\",\"eventLogEnabled\":\" 1110\",\"status\":1,\"wcPort\":\"6029\",\"activeSystem\":\"N\",\"createdBy\":\"\",\"createdDate \":\"2018-11-20 13:11:16\",\"modifiedBy\":\"\",\"modifiedDate\":\"\",\"机构\":\"FSS\ ",\"delFlag\":0,\"accessID\":0,\"rowCount\":0,\"endCount\":0}"

【问题讨论】:

标签: redis key stackexchange.redis redis-cli


【解决方案1】:

您可以使用DUMPRESTORE 命令复制密钥:

  1. 使用DUMP 命令序列化键的值。
  2. 使用RESTORE 命令将序列化的值恢复到另一个键。

您可以将这两个步骤包装到 Lua 脚本中:

-- duplicate.lua
local src = KEYS[1]
local dest = KEYS[2]

local val = redis.call('DUMP', src)
if val == false then
    return 0
else
    -- with RESTORE command, you can also set TTL for the new key, and use the [REPLACE] option to set the new key forcefully. 
    redis.call('RESTORE', dest, 0, val)
    return 1
end

使用 redis-cli 运行 Lua 脚本:./redis-cli --eval duplicate.lua FSS_SYSAGENT FSS_SYSAGENTDuplicate ,

更新

从 Redis 6.2.0 开始,您可以使用COPY 命令来完成这项工作。

【讨论】:

  • 在连接 redis-cli 时,我们需要用这些参数提及 ip 、 port 和 password ??
  • 它的工作方式是给 - /redis-cli -h 127.0.0.1 -p 6379-a 密码 --eval duplicate.lua FSS_SYSAGENT FSS_SYSAGENTDuplicate
猜你喜欢
  • 2015-07-22
  • 2020-08-26
  • 1970-01-01
  • 2017-04-02
  • 1970-01-01
  • 2017-02-05
  • 2020-04-19
  • 1970-01-01
  • 2016-03-20
相关资源
最近更新 更多