Lua脚本中含有多个操作,在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 没有被设置;脚本和/或语法不正确吗?

点赞
用户410102
用户410102

你现在的调用方式是传递一个键名(k1)和两个参数(2, k2)。

我认为你希望它是这样的:

EVAL "redis.call('set', KEYS[1], 'foo'); redis.call('set', KEYS[2],'bar'); return 1;" 2 k1 k2
2013-08-09 20:39:02