【问题标题】:Setting multiple keys in Redis through Lua通过 Lua 在 Redis 中设置多个键
【发布时间】:2019-10-29 01:22:12
【问题描述】:

我正在 Redis 中寻找一个 INSERT 脚本对应项,我想在其中一次设置多个键。

SET foo bar
SET sun moon
SET fire water
...

上面的 Lua 脚本看起来如何,因为我在网上找不到太多帮助。

【问题讨论】:

    标签: redis lua


    【解决方案1】:

    对于 Lua 脚本,我会这样做:

    for i=1, #KEYS do
        redis.call("SET", KEYS[i], ARGV[i])
    end
    

    在执行中,如下所示:

    EVAL 'for i=1, #KEYS do redis.call("SET", KEYS[i], ARGV[i]) end' 2 key1 key2 val1 val2
    

    请注意,#KEYS 不是动态计算的,而是显式传递的 numkeys 参数。

    可以根据需要添加额外的验证——例如,断言相同数量的键和参数——但我强烈建议在客户端进行大部分的健全性检查以提高性能。


    如果不使用 Lua,Redis 自带命令 MSET 可以同时设置多个键。

    https://redis.io/commands/mset

    【讨论】:

    • 我明白,但我想要一个可以进行版本控制的脚本。此外,必须通过 Redis-cli 或语言客户端(Node 等)调用 MSET
    • @Hyperbola 更新了我的答案以包含特定的 Lua 解决方案。
    • 感谢您的回答。我知道MSET 系列命令。我的一般问题是,为 redis 编写脚本的首选方式是什么,尤其是当它需要进行版本控制并跨多个 redis 服务器使用时?它是否使用任何选择的客户端(Node、Python)?
    猜你喜欢
    • 2015-11-18
    • 1970-01-01
    • 2013-12-29
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    • 1970-01-01
    • 2023-03-22
    • 2021-04-16
    相关资源
    最近更新 更多