Redis 的事物不支持完整的 ACID,Redis 虽然提供事物功能, 但是 Redis 的事物和关系数据库事务不可同日而语, Redis 的事物只能保证隔离性和一致性 (I 和 C), 无法保证原子性和持久性 (A 和 D), 具体实现原理如下:
原子性
Redis 事物不支持原子性, Redis 不支持回滚操作, 事物中间一条命令执行失败, 既不会导致前面已经执行的命令回滚, 也不会中断后面的命令的执行.
一致性
Redis 事物能够保证事物开始之前和事物结束以后, 数据库的完整性没有被破坏
隔离性
Redis 不存在多个事物的问题, 因为 Redis 是单进程单线程的工作模式, 这种隔离性的方式也带来了一个隐含的问题, 如果某个客户端通过事物提交了大量的命令, 那么阻塞其他客户端进行任何操作
持久性
Redis 提供了两种持久化的方式, 即 RDB 和 AOF
RDB 持久化只备份当前内存中的数据集, 事物执行完毕时, 其数据还在内存中, 并未立即写入磁盘, 所以 RDB 持久化不能保证 Redis 事物的持久性
AOF 持久化是先执行命令, 执行成功后再将命令追加到日志文件中, 即使 AOF 每次执行命令后立刻将日志文件刷盘, 也可能丢失 1 条命令数据, 因此 AOF 也不能严格保证 Redis 事物的持久性
来源: http://www.bubuko.com/infodetail-2842893.html