Redis事务

1.一致性
        Redis的一致性问题可以分为两部分来讨论:入队错误、执行错误。
        在命令入队的过程中,如果客户端向服务器发送了错误的命令,Redis会拒绝执行事务,并返回失败信息。
        如果命令在事务执行的过程中发生错误,那么Redis只会将错误包含在事务的结果中,这不会引起事务中断或整个失败,不会影响已执行事务命令的结果,也不会影响后面要执行的事务命令,所以它对事务的一致性也没有影响。
2.隔离性
        Redis是单进程程序,并且它保证在执行事务时,不会对事务进行中断,事务可以运行直到执行完所有事务队列中的命令位置。因此,Redis的事务是总是带有隔离性的。
3.原子性
        在上述一致性的介绍中,可以看出在事务队列中,即使有命令执行错误,该事务也会执行完,符合原子性的要求。
4.持久性
        因为事务不过是用队列包裹起了一组Redis命令,并没有提供任何额外的持久性功能,所以事务的持久性由Redis所使用的持久化模式决定:
        在单纯的内存模式下,事务肯定是不持久的。
        在RDB模式下,服务器可能在事务执行之后、RDB文件更新之前的这段时间失败,所以RDB模式下的Redis事务也是不持久的;
        在AOF的“总是SYNC”模式下,事务的每条命令在执行成功之后,都会立即调用fsync或fdatasync将事务数据写入到AOF文件。但是,这种保存是由后台线程进行的,主线程不会阻塞直到保存成功,所以从命令执行成功到数据保存到硬盘之间,还是有一段非常小的间隔,所以这种模式下的事务也是不持久的;
        其他AOF模式也和“总是SYNC”模式类似,所以他们都是不持久的;
        综上所述,Redis事务满足原子性、一致性、隔离性,不满足持久性。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • redis事务 Redis 通过 MULTI 、 DISCARD 、 EXEC 和 WATCH 四个命令来实现事务...
    全能程序猿阅读 2,191评论 0 11
  • Redis通过MULTI、EXEC、WATCH等命令来实现事务(transaction)功能。事务提供了一种将多个...
    HRADPX阅读 6,189评论 0 4
  • 一、Redis高可用概述 在介绍Redis高可用之前,先说明一下在Redis的语境中高可用的含义。 我们知道,在w...
    空语阅读 1,630评论 0 2
  • Redis事务通过MULTI、EXEC、WATCH等命令来实现。事务提供一种将多个命令请求打包,然后一次性、按顺序...
    涵仔睡觉阅读 409评论 0 1
  • 企业级redis集群架构的特点 海量数据 高并发 高可用 要达到高可用,持久化是不可减少的,持久化主要是做灾难恢复...
    lucode阅读 2,232评论 0 7