Дублировать ключ в Redis

Могу ли я продублировать ключ, используя подключенный redis-cli, есть ли какая-либо команда, предопределенная в redis или нет?

Дублируйте FSS_SYSAGENT на FSS_SYSAGENTDuplicate.

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}"


person Manu C Rajan    schedule 26.11.2018    source источник
comment
Возможный дубликат Redis: как установить один ключ равным значению другого ключа?   -  person Urosh T.    schedule 26.11.2018
comment
@УрошТ. не дубликат.   -  person Manu C Rajan    schedule 27.11.2018


Ответы (1)


Вы можете использовать DUMP и RESTORE для дублирования ключа:

  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

Запустите скрипт Lua с помощью redis-cli: ./redis-cli --eval duplicate.lua FSS_SYSAGENT FSS_SYSAGENTDuplicate ,

ОБНОВЛЕНИЕ

Начиная с Redis 6.2.0, для выполнения задания можно использовать команду COPY.

person for_stack    schedule 26.11.2018
comment
при подключении redis-cli нам нужно указать ip, порт и пароль с этими аргументами ?? - person Manu C Rajan; 27.11.2018
comment
Он работает, указав - /redis-cli -h 127.0.0.1 -p 6379-a пароль --eval дубликат.lua FSS_SYSAGENT FSS_SYSAGENTDuplicate - person Manu C Rajan; 27.11.2018