【问题标题】:Lua script with multi operations not working in redis具有多操作的 Lua 脚本在 redis 中不起作用
【发布时间】:2013-08-10 04:39:02
【问题描述】:

刚开始在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;脚本和/或语法不正确吗?

【问题讨论】:

    标签: lua redis


    【解决方案1】:

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

    我想你想要的

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

    【讨论】:

    • 参数的数量必须明确设置吗?在这种情况下,2?
    • 必须发送的密钥数量 (redis.io/commands/eval),参数是密钥后面的所有内容。
    猜你喜欢
    • 2016-05-20
    • 1970-01-01
    • 2020-11-21
    • 2015-10-24
    • 2021-10-27
    • 1970-01-01
    • 2016-08-26
    • 2017-06-05
    • 1970-01-01
    相关资源
    最近更新 更多