1 Star 0 Fork 0

米古月/Redis Helper

Create your Gitee Account
Explore and code with more than 13.5 million developers,Free private repositories !:)
Sign up
文件
Clone or Download
hash_map_iud.go 1.04 KB
Copy Edit Raw Blame History
package script
const (
ScriptHashMapIUDName = "hash_map_iud"
// ScriptHashMapIUD
// Hash Map IUD
ScriptHashMapIUD = `
local function batch_hmset(key, data)
return redis.call('HMSET', key, unpack(data))
end
local function arrayToTable(arr)
local tbl = {}
for i = 1, #arr, 2 do
tbl[arr[i]] = arr[i + 1]
end
return tbl
end
local function updateHash(key, args)
local fv = arrayToTable(args)
-- 删除不再使用的字段
local cursor = '0'
local count = 100 -- 每次扫描返回的数量
local matchPattern = '*'
repeat
local scan_result = redis.call('HSCAN', key, cursor, 'MATCH', matchPattern, 'COUNT', count)
cursor = scan_result[1]
local fields = scan_result[2]
if fields and #fields > 0 then
for _, field in ipairs(fields) do
--检查字段是否存在于 m 中
if not fv[field] then
redis.call('HDEL', key, field)
end
end
end
until cursor == '0'
-- 更新或添加字段
batch_hmset(key, args)
-- 返回元素数量
return #fv
end
return updateHash(KEYS[1], ARGV)
`
)
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/jtdd/redis-helper.git
git@gitee.com:jtdd/redis-helper.git
jtdd
redis-helper
Redis Helper
v1.0.15

Search