Redis 事务

事务从开始到结束,分为三个阶段:

1)事务开始

2)命令入队

3)事务执行(或者放弃)

相关命令:multi,exec,discard,watch。

multi命令将从非实物状态切换为事务状态。

watch是一个乐观锁。在exec执行之前,可利用watch监视一些任意数量的key,如果在事务前,发现至少一个key发生了修改,那么将拒绝执行此事务。

从事务的几个特点论述:

1)原子性:将多个事务当作一个整体,要么都做,要么都不做。

redis不支持回滚(与关系型数据库最大的不同),即使队列中某个命令出现错误(比如某个命令的参数错误),也会继续执行,这样执行后的结果是一些命令成功了,一些命令失败了。

2)一致性:执行事务前数据库是一致的,执行之后,无论成败,数据库也是一致的。

一致性描述了数据符合数据库本身的定义和需求,没有包含非法或者无效的错误数据。

3)隔离性:数据库中有多个事务并发执行时,事务之间不会互相影响,并且在并发状态下执行的事务与串行执行的事务产生的结果完全相同。

Redis是单线程,而且事务不会中断。因此,事务总是以串行的方式运行,所以具有隔离性。

4)持久性:当一个事物执行完毕时,执行事务所得到的结果将保存到永久性存储介质中,即使服务器在事务执行完毕后停机,执行事务所得到结果不会丢失。

Redis的事务持久化由持久化模式决定。

当服务器在AOF模式下,且appendsync选项的值为always的时候,程序总是在执行命令之后调用同步函数(sync),将命令数据真正地保存到硬盘里。这种配置下的事务满足持久性,其他场景不满足。

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

推荐阅读更多精彩内容

  • redis事务 Redis 通过 MULTI 、 DISCARD 、 EXEC 和 WATCH 四个命令来实现事务...
    全能程序猿阅读 6,464评论 0 11
  • Redis事务通过MULTI、EXEC、WATCH等命令来实现。事务提供一种将多个命令请求打包,然后一次性、按顺序...
    涵仔睡觉阅读 2,967评论 0 1
  • redis 是一个高性能的key-value 数据库。作为no sql 数据库redis 与传统关系型数据库相比有...
    点融黑帮阅读 7,925评论 1 15
  • 1. 概述: 和众多其它数据库一样,Redis作为NoSQL数据库也同样提供了事务机制。在Redis中,MULTI...
    六月星空2011阅读 2,750评论 0 0
  • 关系型数据库的事务具备:原子性、隔离性、持久性、一致性。在Redis中也同样拥有事务的概念,本文主要介绍Redis...
    yingzong阅读 7,075评论 1 5