如何使用 HSCAN/redis 过滤多个模式
How to filter multiple patterns using HSCAN / redis
我试过 ioredis
但 HSCAN 只支持单一匹配模式。
从 redis 中筛选多个模式的最佳方法是什么
var stream = redis.hscanStream('myhash', {
match: `foo*`,
count: 10
})
stream.on('data', function(resultKeys) {
// add
})
stream.on('end', function() {
// end
})
为此我最终使用了 Lua 脚本
仅使用 val ;我不需要钥匙因此 if j % 2 == 0
local arr = {}
local len = redis.call('hlen', KEYS[1])
for i=1,#ARGV do
local match = redis.call('hscan', KEYS[1], 0, 'match', ARGV[i], 'count', len)
for j=1, #match[2] do
if j % 2 == 0 then
table.insert(arr, match[2][j])
end
end
end
return arr
我试过 ioredis
但 HSCAN 只支持单一匹配模式。
从 redis 中筛选多个模式的最佳方法是什么
var stream = redis.hscanStream('myhash', {
match: `foo*`,
count: 10
})
stream.on('data', function(resultKeys) {
// add
})
stream.on('end', function() {
// end
})
为此我最终使用了 Lua 脚本
仅使用 val ;我不需要钥匙因此 if j % 2 == 0
local arr = {}
local len = redis.call('hlen', KEYS[1])
for i=1,#ARGV do
local match = redis.call('hscan', KEYS[1], 0, 'match', ARGV[i], 'count', len)
for j=1, #match[2] do
if j % 2 == 0 then
table.insert(arr, match[2][j])
end
end
end
return arr