1.概念
redis的事务本质是一组命令的集合,事务支持一次执行多个命令,一个事务中所有的命令都会被序列化。
在事务执行的过程中,会按照顺序串行执行队列中的命令,其他客户端提交的命令请求不会插入到当前的事务中
redis的事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令
redis的事务没有隔离级别的概念
因为是批量操作的原因,所以没有办法进行隔离。在发送exec(提交事务的意思)之前所执行的队列都会放到缓存中,并不会被实际执行。
redis是不保证原子性
redis中,单条命令是原子性执行的,但是事务不保证原子性,并且没有回滚,事务中任意命令执行失败,其余的命令任然会执行。
redis的事务分为三个阶段:开始事务,命令入列,执行事务
事务命令
watch key1 key2 #监视一个或者多个key,如果在开始事务执行之前,被监视的key
被其他的命令改动,则事务被打断,有点像乐观锁 监视事务
multi #开始事务
exec #提交事务
unwatch #取消监视
discard #取消事务,放弃事务中所有的命令
2.使用
- 正常执行
- 取消事务
- 存在命令性错误(编译错误),都不执行
- 语法性错误,其他会执行
- watch监控