【发布时间】:2015-11-28 15:07:46
【问题描述】:
我将 spring-data-redis 从 1.4.2 升级到 1.5.2 后出现此错误。
我的代码是实现悲观锁,
redisTemplate.execute(new RedisCallback<Boolean>() {
@Override
public Boolean doInRedis(RedisConnection connection)
throws DataAccessException {
Boolean nx = connection.setNX(lockKey.getBytes(), identifier.getBytes());
return nx;
}};
检查了所有不为空的字段。 setNx 方法总是返回 null。它应该返回布尔值 true 或 false。
感谢任何帮助。
更新:
上面的代码 sn-p 嵌套在另一个 SessionCallback Redis 事务中。它曾经在 spring-data-redis 1.4.2 下工作。为了修复ERR EXEC without MULTI - spring redis+jedis 报告的“ERR EXEC without MULTI”,我将 lib 升级到 1.5.2,问题突然出现了。
为了解决这个问题,我首先尝试为嵌套回调方法分配不同的 redisTemplate(原型 bean),但没有成功。 可行的解决方案是将单个事务分解并扁平化为4个,“测试是否需要锁”,“获取锁”,“做生意”,“释放锁”。
【问题讨论】:
-
问题已解决。
-
请添加一个答案,最好使用您用来修复它的代码