Я использую jedis для использования базы данных Redis.Программное обеспечение основано на сервисах AWS, таких как Redis, SQS, SMS и Kubernetes с POD и т. Д. На самом деле все работает нормально, но однажды у меня появилось следующее исключение: «JedisDataException: ERR WATCH внутри MULTI не разрешен», что произошло на месте как есть.видно в коде.Я не мог больше отправлять запросы в Redis (независимо от того, какой ключ я хотел использовать).После перезапуска 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;
}