Дублируйте ключ в Redis - PullRequest
       74

Дублируйте ключ в Redis

0 голосов
/ 26 ноября 2018

Могу ли я продублировать ключ с помощью подключенного 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\ ": \" \ ", \" creationDate \ ": \" 2018-11-20 13:11:16 \ ", \ "ifiedBy \": \ "\", \ "ifiedDate \ ": \" \ "\ "институт \": \ "FSS \", \ "DelFlag \": 0, \ "accessID \": 0, \ "сверку \": 0, \ "endCount \": 0} "

1 Ответ

0 голосов
/ 26 ноября 2018

Вы можете использовать команды 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 ,

...