0

刚开始在redis中玩lua脚本,想在一个脚本中执行以下命令:

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没有设置;脚本和/或语法不正确吗?

4

1 回答 1

3

按照您现在的调用方式,它传入一个键名 ( k1) 和两个参数 ( 2, k2)。

我想你希望它是

EVAL "redis.call('set', KEYS[1], 'foo'); redis.call('set', KEYS[2],'bar'); return 1;" 2 k1 k2
于 2013-08-09T20:39:02.040 回答