StackExchange.Redis - 如何克隆哈希映射

时间:2017-01-17 06:28:24

标签: c# redis stackexchange.redis

是否有任何StackExchange.Redis api可以克隆哈希映射,或者更好地使用redis lua脚本?

1 个答案:

答案 0 :(得分:1)

克隆/复制任何Redis数据类型的最简单方法是使用DUMPRESTORE命令组合。在大多数情况下,它也是最快的。

为避免来回发送有效负载,Lua脚本绝对是最佳方式(https://gist.github.com/itamarhaber/d30b3c40a72a07f23c70):

-- @desc:   The fastest, type-agnostic way to copy a Redis key
-- @usage:  redis-cli --eval copy_key.lua <source> <dest> , [NX]

local s = KEYS[1]
local d = KEYS[2]

if redis.call("EXISTS", d) == 1 then
  if type(ARGV[1]) == "string" and ARGV[1]:upper() == "NX" then
    return nil
  else
    redis.call("DEL", d)
  end
end

redis.call("RESTORE", d, 0, redis.call("DUMP", s))
return "OK"