一、redis事务
multi:开启事务
exec:提交执行事务
discard:取消事务
redis的事务不具有原子性,即一个事务中的多个命令,可能部分成功、部分失败。
编译异常:命令都不会执行
运行异常:正确命令会执行,错误命令不执行
二、redis监视
redis使用watch key命令监视一个key,实现乐观锁。监视时获取key的版本号,提交事务时,如果发现key的被其他线程修改,那么当前事务执行失败。
#A客户端的线程
watch key #监视一个key
multi
…… #多个命令
#B客户端的线程
set key 1 #b客户端修改key的数据
A客户端的线程
exec #提交事务,会失败
#执行失败
unwatch
三、模版
springboot 1.x : Jedis
springboot 2.x : Lettuce
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.1.4.RELEASE</version>
</dependency>
RedisTemplate
一般写一个RedisUtil工具类,里面封装redis模版的方法,实现对redis的操作。
@Component
public class RedisUtil{
@Autowired
private RedisTemplate redisTemplate;
public void set(String key, String value){
redisTemplate.opForValue().set(key,value);
}
}
以上