是否可以通过多路复用连接进行 redis 事务(WATCH、MULTI、EXEC)?
Is redis transaction (WATCH, MULTI ,EXEC ) possible over multiplexed connection?
我正在使用提供连接多路复用的 Redis 库(我目前正在使用 Rust 库,但我认为这个问题与任何实现都相关)。
根据我所了解的 multiplexing(以及我从 lib 实现中了解到的内容),它利用相同的连接来处理来自多个上下文的数据库操作 (threads/tasks/etc。 .).
现在,我不确定如果 WATCH 在同一个多路复用连接上与 2 个不同的上下文并行调用会发生什么。来自一个上下文的 EXEC 是否会取消另一个线程中的 WATCH,或者 Redis 是否知道如何区分上下文,即使它们使用相同的连接?
不,不可能通过多路复用连接。 Redis 事务上下文附加到特定的“客户端”,这意味着特定的连接。
我正在使用提供连接多路复用的 Redis 库(我目前正在使用 Rust 库,但我认为这个问题与任何实现都相关)。
根据我所了解的 multiplexing(以及我从 lib 实现中了解到的内容),它利用相同的连接来处理来自多个上下文的数据库操作 (threads/tasks/etc。 .).
现在,我不确定如果 WATCH 在同一个多路复用连接上与 2 个不同的上下文并行调用会发生什么。来自一个上下文的 EXEC 是否会取消另一个线程中的 WATCH,或者 Redis 是否知道如何区分上下文,即使它们使用相同的连接?
不,不可能通过多路复用连接。 Redis 事务上下文附加到特定的“客户端”,这意味着特定的连接。