2016-12-07 2 views
2

Я пытаюсь сделать MSETNX вызов redis из сценария Lua. Мне нужно установить несколько ключей с пустыми значениями, если они еще не существуют.Lua table as redis аргумент

Я попытался сделать это как:

redis.call('MSETNX', KEYS) с КЛЮЧИ {'key1', '', 'key2', ''} переданных скрипту.

но это не работает, потому что для этого вызова нужны отдельные ключи и значения, переданные как аргумент, а не таблица.

Это работает:

redis.call('MSETNX', 'key1', '', 'key2', '')

но переменная КЛЮЧИ является динамическим, так что я не могу сделать это, как это.

Как я могу позвонить MSETNX, не указывая отдельно каждый ключ отдельно?

- EDIT -

Можно ли unpack и ценности "перемешиваются"?

Могу ли я пройти KEYS = {'key1', 'key2'} и unpack до: 'key1', '', 'key2', ''? Благодаря!

+0

Я думаю, что вы, возможно, неправильно поняли мою проблему. Вопрос заключался не в том, как запустить это в Redis, а в том, как «разбить» мои элементы таблицы на отдельные аргументы. – aturkovic

ответ

3

Использование Lua-х unpack на столе, т.е .:

redis.call('MSETNX', unpack(KEYS)) 

Side Примечание: не используйте KEYS как имя вашей таблицы, потому что таблица используется Redis передать ключевые имена в сценарии.

+0

Вот и все! распаковка сделала трюк! Спасибо огромное! Кстати, не могли бы вы взглянуть на мое редактирование для другой вещи, которая беспокоит меня? – aturkovic

+0

Боковое примечание: я пытался сделать пример, я не назначаю переменную KEYS в сценарии Lua, но спасибо за предупреждение. – aturkovic

+1

Я ничего не знаю об этом, но вы можете легко перебирать стол за вставкой пробелов после каждой записи, а затем распаковать все это. –