这个问题在学习的时候老是提到,但是老是搞不清楚事务的开启和结束
1.什么是事务
一系列操作组成一个操作单元,要么操作成功,要么操作不成功
事务可以简称为ACID 这些都是英文的简称
A:原子性
C:一致性
I:持久性
D:隔离性
2.事务的并发问题
脏读、幻读、不可重复读
3.隔离级别
(1)读未提交(级别1):级别最低,也最不安全,什么问题都没解决
(2)读已提交(级别2):可避免脏读
(3)可重复读(级别4):解决脏读和不可重复读
(4)串行化(级别8):解决脏读、不可重复读和幻读,但是效率很低
一般默认的是4级别
4.redis事务
(1)MULTI:开启事务
将接下来的操作,放到队列中等待被执行
(2)EXEC:提交事务
一个个被执行
(3)DISCARD:取消事务
全部都不执行
执行事务时5种情况
1.正常执行
2.取消事务
3.全体连坐
在事务当中,一旦有错误,所有的命令 都不执行:只有语法错误会出现连坐的情况
冤有头债有主:
事务当中,多个命令,有一个出现了问题,他就不执行,不影响其他命令
4.Watch监控
监控一个键 当这个键开启事务的时候,别人篡改了数据 事务是无效的
5.乐观锁机制:
他认为在他开启事务的时候,别人都不会修改,当他提交的时候,他就会去检查别人改没改,别人没改就成功,如果别人改了他就失败
悲观锁机制:
硬盘上的数据库就采用的是悲观锁
开启事务的时候,他就认为别人会改我的数据,把数据锁起来,不允许别人修改