gpt4 book ai didi

java - 杰迪斯数据异常 : ERR WATCH inside MULTI is not allowed

转载 作者:IT王子 更新时间:2023-10-29 06:16:18 24 4
gpt4 key购买 nike

我用jedis是为了Redis数据库的使用。该软件基于 AWS 服务,如 Redis、SQS、SMS 和带有 POD 的 Kubernetes 等。实际上一切正常,但是一旦我遇到以下异常:“JedisDataException:不允许在 MULTI 中使用 ERR WATCH”,这发生在代码中可见的地方。我无法再向 Redis 发出任何请求(无论我想使用哪种 key )。重启 POD 后一切正常。我无法再重现错误。

你知道问题出在哪里吗?我怀疑它与 aws-sqs 或 POD 的扩展和并发性有关。

事件顺序是:事件-->aws:sns-->aws:sqs-->k8s:POD(java代码)-->给aws:redis加值

谢谢。

public boolean add(key, value) {
jedis.watch(key);

Transaction tx = jedis.multi();

tx.hsetnx(key, value, json);

if (tx.exec().size() == 0) {

LOGGER.warn("nothing executed...");
} else {
LOGGER.debug("add bike executed...");
}

jedis.resetState();
return true;
}

最佳答案

我猜,这一行 tx.hsetnx(key, value, json); 抛出一个异常,使这个事务永远打开,后续请求(对该方法的新调用)开始执行这些步骤就像 watch 一样,因为交易已经打开,在同一连接上运行 watch 可能会抛出错误?

当您执行 pod 回收/重新启动时,意味着 pod 被销毁,它保持连接被关闭,最终事务被关闭。因此,您似乎没有收到此错误,但如果在运行 EXEC 命令之前发生异常,则此问题可能会再次出现。

关于java - 杰迪斯数据异常 : ERR WATCH inside MULTI is not allowed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56921955/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com