Как просмотреть результаты таблицы lua в скрипте - PullRequest
0 голосов
/ 24 ноября 2018

Я пишу сценарий Lua для выполнения в Redis.Я работаю с отсортированными наборами, которые выглядят так:

Member: 96954_1_1557705600 Score: 1557705600

Счет - это отметка времени эпохи Unix.

Я хотел бы сначала получить результаты, которыенаходятся между двумя метками времени, затем отфильтруйте те, которые основаны на шаблоне глобуса в элементе.Что-то вроде MATCH *_1_*.

Мой скрипт выглядит следующим образом, но он не работает, когда я пытаюсь передать таблицу Lua в zscan:

local start_date = KEYS[1] local end_date = KEYS[2] local limited_by_date = redis.call('zrangebyscore','rooms', start_date, end_date) return redis.call('zscan', unpack(limited_by_date), 'match *_1_*')

limited_by_date в правильных значениях, которые я ожидаю, но как я могу искать их с помощью zscan сейчас?

1 Ответ

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

Когда вы получаете limited_by_date, вы можете самостоятельно выполнить итерацию массива и вывести элементы, соответствующие шаблону.

local result = {}
for i, mem in ipairs(limited_by_date) do
    if string.match(mem, ".+_1_.+") then result[#result + 1] = mem end
end

return result

Нет необходимости использовать команду ZSCAN.Фактически, если вы используете ZSCAN, вы должны пересечь ZSCAN результат и ZRANGEBYSCORE результат, чтобы получить окончательный ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...