在redis中复制一个键
Duplicate a key in redis
我可以使用连接的redis-cli复制密钥吗,redis中是否有预定义的命令?
重复 FSS_SYSAGENT 至 FSS_SYSAGENT重复。
10.44.112.213:6403> hgetall FSS_SYSAGENT
1) "SYSTEM_01"
2) "{\"port\":\"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\":\" \",\"institution\":\"FSS\",\"delFlag\":0,\"accessID\":0,\"rowCount\":0,\"endCount\" :0}"
您可以使用 DUMP and RESTORE 命令复制密钥:
- 使用
DUMP
命令序列化键的值。
- 使用
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
运行 Lua 带有 redis-cli 的脚本:./redis-cli --eval duplicate.lua FSS_SYSAGENT FSS_SYSAGENTDuplicate ,
更新
从 Redis 6.2.0 开始,您可以使用 COPY 命令来完成这项工作。
我可以使用连接的redis-cli复制密钥吗,redis中是否有预定义的命令?
重复 FSS_SYSAGENT 至 FSS_SYSAGENT重复。
10.44.112.213:6403> hgetall FSS_SYSAGENT
1) "SYSTEM_01" 2) "{\"port\":\"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\":\" \",\"institution\":\"FSS\",\"delFlag\":0,\"accessID\":0,\"rowCount\":0,\"endCount\" :0}"
您可以使用 DUMP and RESTORE 命令复制密钥:
- 使用
DUMP
命令序列化键的值。 - 使用
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
运行 Lua 带有 redis-cli 的脚本:./redis-cli --eval duplicate.lua FSS_SYSAGENT FSS_SYSAGENTDuplicate ,
更新
从 Redis 6.2.0 开始,您可以使用 COPY 命令来完成这项工作。