2013-08-09 2 views
0

Только начал играть с Lua Scripting в Redis, я хочу, чтобы выполнить следующие команды в скрипте:Lua скрипт с мульти операция не работает в Redis

set k1 foo 
set k2 bar 

Попробованном ..

> EVAL "redis.call('set', KEYS[1],'foo'); redis.call('set',KEYS[2],'bar'); return 1;" 1 k1 2 k2 


> script load "redis.call('set', KEYS[1],'foo'); redis.call('set',KEYS[2],'bar'); return 1;" 
> "bb031c00b6ab2508bbf182dadd5c9bf1675cce56" 
> EVALSHA "bb031c00b6ab2508bbf182dadd5c9bf1675cce56" 1 k1 2 k2 

Результаты

get k1 
1) "foo" 

get k2 
(nil) 

Почему k2 не установлен; является ли скрипт и/или синтаксис неправильным?

ответ

3

способ, которым вы это называете сейчас, он передает одно ключевое имя (k1) и два аргумента (2, k2).

Я думаю, что вы хотите быть

EVAL "redis.call('set', KEYS[1], 'foo'); redis.call('set', KEYS[2],'bar'); return 1;" 2 k1 k2 
+0

Число аргументов должно быть установлено явно? В этом случае 2? – raffian

+0

необходимо отправить количество ключей (http://redis.io/commands/eval), а аргументы - все, что следует за клавишами. – akonsu

+0

Работы, спасибо. – raffian

Смежные вопросы