【问题标题】:How to use Lua table inside redis.call?如何在 redis.call 中使用 Lua 表?
【发布时间】:2017-03-29 16:44:40
【问题描述】:

在 Redis 中执行 Lua 脚本时出现 Redis 错误。我的困惑是如何使用 Redis 数组回复来制作第二个redis.call。我的用例是批量删除 Sorted Set 成员。

127.0.0.1:6380> eval "local list = redis.call('zrevrange','test', 50, -1) return redis.call('zrem', 'test', list)" 0
(error) ERR Error running script (call to f_aa5dddbbb039b576aba5f46a99a268339ca2e9d5): @user_script:1: @user_script: 1: Lua redis() command arguments must be strings or integers 

如何做到这一点?

【问题讨论】:

    标签: lua redis


    【解决方案1】:

    使用 Lua 的 unpack - 即:

    local list = redis.call('zrevrange','test', 50, -1) return
    redis.call('zrem', 'test', unpack(list))
    

    但是,要根据范围从排序集中执行批量删除,只需使用ZREMRANGEBYRANK

    ZREMRANGEBYRANK test 0 -50
    

    【讨论】:

    • 感谢您的建议。
    猜你喜欢
    • 1970-01-01
    • 2012-09-20
    • 2021-04-15
    • 2017-06-26
    • 1970-01-01
    • 2013-09-29
    • 2017-11-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多