【问题标题】:Do I need to use MULTI/EXEC in Redis script我需要在 Redis 脚本中使用 MULTI/EXEC
【发布时间】:2013-12-22 02:13:54
【问题描述】:

我想用 Lua 脚本调用替换 Redis 中的 MULTI/EXEC 操作,并根据 Redis 中的脚本文档:

Redis 使用相同的 Lua 解释器来运行所有命令。还 Redis 保证脚本以原子方式执行:没有其他的 脚本或 Redis 命令将在脚本运行时执行 执行。这种语义与 MULTI / EXEC 的语义非常相似。 从所有其他客户的角度来看, 脚本要么仍然不可见,要么已经完成。

据我了解,在这种情况下我可以放弃 MULTI/EXEC 并简化我的程序,或者它更复杂,然后这个,我仍然需要使用它以防万一? (以集群环境为例)

【问题讨论】:

    标签: multithreading lua nosql redis atomic


    【解决方案1】:

    一般来说,使用 Lua 脚本,您可以删除 MULTI/EXEC,前提是 MULTI/EXEC 块仅用于强制隔离(如 ACID 中的隔离)。

    集群环境不会改变任何东西,因为 MULTI/EXEC 块仅在实例级别起作用。

    【讨论】:

    • 是否还有可能需要 multi/exec 的场景?例如,如果脚本在中间某处抛出错误怎么办?这将导致只有部分结果反映在数据库中,对吗? stackoverflow.com/questions/61711148/…
    猜你喜欢
    • 2020-11-08
    • 2020-08-25
    • 1970-01-01
    • 2021-04-01
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 2013-03-24
    • 2021-06-29
    相关资源
    最近更新 更多