复制Redis中的密钥
我可以使用连接的redis-cli复制密钥吗,redis中是否预定义了任何命令?
Can I duplicate a key using the redis-cli connected, is there any command predefined in redis or not?
将FSS_SYSAGENT复制到FSS_SYSAGENTDuplicate.
Duplicate FSS_SYSAGENT to FSS_SYSAGENTDuplicate.
10.44.112.213:6403> hgetall 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 \,\"状态\:1,\" wcPort \:\" 6029 \,\" activeSystem \:\" N \,\" createdBy \:\" \,\" createdDate \:\" 2018-11-20 13:11:16 \,\" modifiedBy \:\" \,\" modifiedDate \:\" \,\"机构\:\\ FSS \ ,\" delFlag \:0,\" accessID \:0,\" rowCount \:0,\" endCount \:0}""
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}"
You can use the DUMP and RESTORE commands to duplicate the key:
- 使用
DUMP
命令序列化密钥的值. - 使用
RESTORE
命令将序列化的值还原到另一个密钥.
- use the
DUMP
command to serialize the value of a key. - use the
RESTORE
command to restore the serialized value to another key.
您可以将以下两个步骤包装到Lua脚本中:
You can wrap these two steps into a Lua script:
-- 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 ,
Run the Lua script with redis-cli: ./redis-cli --eval duplicate.lua FSS_SYSAGENT FSS_SYSAGENTDuplicate ,