io.lettuce.core.RedisCommandExecutionException: ERR EXEC without MULTI

尝试从 Redis 中批量获取数据时报错:

io.lettuce.core.RedisCommandExecutionException: ERR EXEC without MULTI

代码如下:

redisTemplate.multi();
for (String key : keys) {
    hmget(key);
}
List<Object> result = redisTemplate.exec();
return result;
  

根据 StackOverflow 上的回答,需要调用 redisTemplate.setEnableTransactionSupport(true) 方法来开启事务。

修改后代码如下:

redisTemplate.setEnableTransactionSupport(true);
redisTemplate.multi();
for (String key : keys) {
    hmget(key);
}
List<Object> result = redisTemplate.exec();
redisTemplate.setEnableTransactionSupport(false);
return result;