Redis事物特点和持久化方式

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事物的持久性

posted on 2018-11-11 15:09  anqli_java  阅读(358)  评论(0编辑  收藏  举报