Как отфильтровать несколько шаблонов, используя 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
})

1 ответ

Решение

Я использовал скрипт 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
Другие вопросы по тегам