事务
命令
MULTI:开始事务,redis不允许嵌套事务
EXEC:执行事务
DISCARD:取消事务
WATCH :只能在客户端进入事务状态之前执行, 在事务状态下发送 WATCH 命令会引发一个错误, 但它不会造成整个事务失败, 也不会修改事务队列中已有的数据(和前面处理 MULTI 的情况一样)。
阶段
开启事务
命令入队
执行事务
redis> MULTI
OK
redis> SET book-name "Mastering C++ in 21 days"
QUEUED
redis> GET book-name
QUEUED
redis> SADD tag "C++" "Programming" "Mastering Series"
QUEUED
redis> SMEMBERS tag
QUEUED
redis> EXEC
1) OK
2) "Mastering C++ in 21 days"
3) (integer) 3
4) 1) "Mastering Series"
2) "C++"
3) "Programming"
ACID
原子性
redis事务在执行的中途遇到错误,不会回滚,而是继续执行后续命令。不满足原子性。
持久性
事务不过是用队列包裹起了一组 Redis 命令,并没有提供任何额外的持久性功能,所以事务的持久性由 Redis 所使用的持久化模式决定。RDB、AOF。
隔离性
redis事务在执行的过程中,不会处理其它命令,而是等所有命令都执行完后,再处理其它命令。满足隔离性。
一致性
redis事务在执行过程中发生错误或进程被终结,都能保证数据的一致性。
Last updated