一、什么的事务和事务的特性
- 原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。
- 一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。
- 隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的。
- 持久性(Durability):对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障。
二、redis的事务特性
redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。如果执行中有某个命令错误,不会中断,而是会继续执行,直至执行完事务的所有命令。
redis在执行事务的时候,并不会立即返回某个命令的结果(立即返回一个queued),而是在执行exec命令才会开始执行事务中的命令,所有命令执行完成后,才会返回所有的结果。
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set test1 test
QUEUED
127.0.0.1:6379> set test2 test
QUEUED
127.0.0.1:6379> hset test1 test test
QUEUED
127.0.0.1:6379> exec
1) OK
2) OK
3) (error) WRONGTYPE Operation against a key holding the wrong kind of value
三、redis事务使用的命令
MULTI :开始事务
EXEC :执行事务
DISCARD:取消事务