Redis中事务ACID支持程度
事务是一个数据库必备的元素,对于redis也不例外,对于一个传统的关系型数据库来说,数据库事务满足ACID四个特性: A代表原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。 C代表一致性:事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束 I代表隔离性:多个事务并发执行时,一个事务的执行不应影响其他事务的执行 D代表持久性:已被提交的事务对数据库的修改应该永久保存在数据库中 然而,对于redis来说,只满足其中的: 一致性和隔离性两个特性,其他特性是不支持的。 A原子性 单个 Redis 命令的执行是原子性的,但 Redis 没有在事务上增加任何维持原子性的机制,所以 Redis 事务的执行并不是原子性的 如果一个事务队列中的所有命令都被成功地执行,那么称这个事务执行成功 另一方面,如果 Redis 服务器进程在执行事务的过程中被停止 —— 比如接到 KILL 信号、宿主机器停机,等等,那么事务执行失败 事务失败时,Redis 也不会进行任何的重试或者回滚动作,不满足要么全部全部执行,要么都不执行的条件 C一致性 一致性分下面几种情况来讨论: 首先