1 是什么
官网:https://redis.io/docs/manual/transactions/
可以一次执行多个命令,本质是一组命令的集合,一个事务中的所有命令都会序列化,按顺序地串行化执行而不会被其他命令插入,不许加塞
2 能干嘛
一个队列中,一次性、顺序性、排他性的执行一系列命令
3 Redis事务特点
- Redis的事务仅仅是保证事务里的操作会被连续独占的执行,redis命令执行是单线程架构,在执行完事务内所有指令前是不可能再去同时执行其他客户端的请求的
- Redis的事务不保证原子性,也就是不保证所有指令同时成功或同时失败,只有决定是否开始执行全部指令的能力,没有执行到一半进行回滚的能力
- Redis会保证一个事务内的命令依次执行,而不会被其它命令插入
- 没有回滚操作,需要用户收回revert changes
4 和数据库的区别
- 没有隔离级别的概念
- 不保证原子性
5 常用命令
- MULTI 开启事务
- EXEC 执行事务
- DISCARD 放弃事务
- WATCH 使用乐观锁监控某个key,Redis在修改的时候会检测数据是否被更改,如果被更改了,则执行失败
MULTI
....
EXEC
MULTI
....
DISCARD
注意
- 在开启事务时,EXEC之前,如果遇到错误,那么整个事务将不再有效
- 在EXEC之后,遇到错误后,剩余的命令还会继续执行
- 没有回滚操作