【发布时间】:2019-11-17 04:52:58
【问题描述】:
我使用jedis来使用Redis数据库。该软件基于 AWS 服务,如 Redis、SQS、SMS 和带有 POD 的 Kubernetes 等。 实际上一切正常,但是一旦我遇到以下异常:“JedisDataException:不允许 MULTI 内的 ERR WATCH”,这发生在代码中可见的地方。我无法再向 Redis 发出任何请求(无论我想使用哪种密钥)。重新启动 POD 后,一切正常。 我无法再重现该错误。
你知道有什么问题吗? 我怀疑它与 aws-sqs 或 POD 的缩放和并发性有关。
事件顺序为:event --> aws:sns --> aws:sqs --> k8s:POD (java code) --> 给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;
}
【问题讨论】:
标签: java amazon-web-services kubernetes redis jedis