事务
事务:由一系列数据库操作组成的一个完整的逻辑过程(指令集)
Mysql中事务的四大特性 1.Atomicity(原子性):一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 2.Consistency(一致性):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。 3.Isolation(隔离性):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。 4.Durability(持久性):事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
redis事务的三大特性 1.一次性:指的是Redis中的事务只执行一次,在该事务执行结束之后,这条事务的生命周期就结束了,再次执行事务时需要重新开启事务。 2.顺序性:指Redis的事务中的所有命令,都是按照先后顺序依次执行的。 3.排他性:指事务在对某一个数据进行操作的同时,其他事务或其他命令不能对这个数据进行操作。
执行事务
正常执行事务
开始事务
multi
命令入队
这一步可以任意输入命令,命令不会立即执行,而是入队
提交事务
exec
取消事务执行
取消事务
discard
事务编译时异常
如果提交的是错误指令,会报错但是也会入队,之后整个事务都不会执行
运行时异常
运行时异常的命令任然可以入队,执行事务时没有异常的指令正常执行,该指令执行失败返回错误
redis乐观锁
redis中的锁: 悲观锁:认为什么时候都可能出错,所以在任何时候都会加锁 乐观锁:认为什么时候都不会出错,所以什么时候都不会加锁,在更新数据的时候只需要去判断,在此期间是否有人修改过这个数据即可
实现乐观锁
watch key
|