Redis 事务的ACID(为什么是半原子性,特定持久化)
背景在传统的关系式数据库中,常常用ACID性质来检验功能的可靠性和安全性。在Redis中,事务总是具有原子性(Atomicity)、一致性(Consistency)和隔离性(Isolation),并且当Redis运行在某种特定的持久化模式下,事务也具有持久性(Durability)原子性对于Redis的事务功能来说,事务队列中的命令要么全部执行,要么一个都不执行,但是不同于关系型数据库事务,Red
背景
在传统的关系式数据库中,常常用ACID性质来检验功能的可靠性和安全性。
在Redis中,事务总是具有原子性(Atomicity)、一致性(Consistency)和隔离性(Isolation),并且当Redis运行在某种特定的持久化模式下,事务也具有持久性(Durability)
原子性
对于Redis的事务功能来说,事务队列中的命令要么全部执行,要么一个都不执行,但是不同于关系型数据库事务,Redis不支持事务回滚机制(rollback),即使事务队列中的某个命令在执行期间出现了错误,整个事务也会继续执行下去,知道将事务队列中的所有命令执行完毕,因此Redis的原子性也有被称做半原子性。
注:Redis不支持事务回滚作者解释如下:
因为这种复杂的功能和Redis追求简单高效的设计主旨不相符合,并且,Redis事务的执行时错误通常都是编程错误产生的,这种错误通常只会出现在开发环境中,很少会在实际的生成环境中出现,所有认为没有必要为Redis开发事务回滚功能
一致性
Redis通过谨慎的错误检测和简单的设计来保证事务的一致性,主要分为:入队错误、执行错误、服务器停机错误
隔离性
Redis中使用单线程的方式来执行事务(以及事务队列中的命令),并且服务器保证,在执行事务期间不会对事务中断,因此,Redis的事务总是以串行的方式运行的,并且事务也总是具有隔离性
持久性
Redis的事务并没有提供额外的持久化功能,但是如果服务器开启了RDB和AOF持久化,那么就保证了特定条件下的持久化操作
更多推荐

所有评论(0)