概念
ACID,是指数据库管理系统(DBMS)在写入或更新资料的过程中,为保证事务(transaction)是正确可靠的,所必须具备的四个特性:
原子性(atomicity,或称不可分割性)、一致性(consistency)、隔离性(isolation,又称独立性)、持久性(durability)
Atomicity(原子性):一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
Consistency(一致性):在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
Isolation(隔离性):数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。
[事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)]
Durability(持久性):事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失
Redis中的ACID和mysql中的ACID有啥不一样?
MySQL 的 ACID 是数据库级别强一致事务保证,而 Redis 的 ACID 只是“弱事务语义”,主要保证原子执行,不保证真正的隔离与回滚
| 特性 | MySQL | Redis |
|---|---|---|
| Atomicity | 支持回滚 | 不支持回滚 |
| Consistency | DB约束保证 | 应用保证 |
| Isolation | 4种隔离级别 | 无 |
| Durability | redo log 强保证 | RDB/AOF 可选 |