事务
说到事务,我们都能一下想到事务的四个特性(ACID):
- 原子性(Atomic):整个事务中的操作只有两种情况,全部完成和全部没有完成。
- 一致性(Consistency):事务开始之前和事务结束以后,数据库的完整性约束没有被破坏或前后状态一致。
- 隔离性(Isolation):一个事务内部的操作及使用的数据对其他事务是隔离的,并发执行的各个事务之间不能相互干扰。
- 持久性(Durability):事务一旦提交,数据就已经永久保存了。
但是Redis事务,却有所不同,在编译时出错,是具有原子性的,但在执行时出错,是没有原子性的,因此,可以认为,Redis事务是没有原子性。
同样Redis事务有隔离性但是没有隔离级别的。
Redis中事务可以一次执行多个命令,是一组命令的集合,一个事务中所有的命令都会被序列化,在事务的执行过程中,会按顺序串行化执行队列中的命令。
Redis中,单条命令的执行是原子性的,但事务是不保证原子性的,而且相对于MySQL来说,Redis是没有回滚的概念。Redis执行过程中的命令执行失败