使用redis事务时需要新的客户端连接吗?

问题描述 投票:0回答:2

我的应用程序到处使用redis的单例连接,它在启动时初始化。 我对

MULTI.EXEC()
的理解告诉我们,当在应用程序中的任何位置调用
WATCHed
时,我所有的
UNWATCHed
键都将是
MULTI.EXEC()
。 这意味着所有的键
WATCHed
,无论它们是哪个
MULTI
块,都将不被监视,从而达到了
WATCHed
的全部目的。

我的理解正确吗?
  1. 如何避免这种情况,是否应该为每个事务创建一个新连接?
redis transactions locking watch ioredis
2个回答
0
投票


0
投票
您将需要一个单独的连接,以确保 WATHC 命令与您想要的唯一 EXEC 结合在一起。

现在在答案中提到了

我认为这是不对的,因为Redis中的WATCH命令是在每个连接的基础上运行的。

当您发出WATCH命令时,它仅适用于发出该命令的连接。 当您对特定键发出 WATCH 命令时,Redis 会在当前连接的上下文中将这些键标记为“已监视”。

© www.soinside.com 2019 - 2024. All rights reserved.