模式:watch...multi....exec
watch是加锁,multi是要执行的逻辑,exec是执行,未执行前所有multi中的语句是不会执行。
@RequestMapping("/multi")
@ResponseBody
public Map<String, Object> testMulti() {
redisTemplate.execute(new SessionCallback() {
@Override
public Object execute(RedisOperations redisOperations) throws DataAccessException {
redisOperations.watch("value1");//锁定value1
redisOperations.multi();
redisOperations.opsForValue().set("value1","val");
redisOperations.opsForValue().set("value2","val2");
return redisOperations.exec(); //执行
}
});
Map<String, Object> map = new HashMap<String, Object>();
map.put("success", true);
return map;
}