redis学习(四)redis事务

栏目: 数据库 · 发布时间: 6年前

内容简介:redis的事务可以理解为一系列串行命令的集合。redis的事务和单条命令一样,都是redis的最小执行单位,因此一个事务内的命令,要么全部执行,要么全部不执行。事务的概念对于熟悉数据库的人们并不陌生,而redis作为一个数据库系统,必然会对事务进行一定的支持。redis实现事务的方式简单来说是将一系列的命令先保存在一个队列中,然后交给redis串行化的顺序执行。MULTI命令:用于开启redis事务。在同一个客户端内,一旦开启了事务,代表着进入了事务状态,后续输入的所有命令都将被加入事务命令队列,而不是

redis事务

1.redis事务介绍

redis的事务可以理解为一系列串行命令的集合。redis的事务和单条命令一样,都是 redis 的最小执行单位,因此一个事务内的命令,要么全部执行,要么全部不执行。事务的概念对于熟悉数据库的人们并不陌生,而redis作为一个数据库系统,必然会对事务进行一定的支持。

redis实现事务的方式简单来说是将一系列的命令先保存在一个队列中,然后交给redis串行化的顺序执行。

2.redis事务常用命令

2.1 MULTI(开启事务)

MULTI命令:用于开启redis事务。在同一个客户端内,一旦开启了事务,代表着进入了事务状态,后续输入的所有命令都将被加入事务命令队列,而不是立即执行。

2.2 EXEC(提交事务)

EXEC命令:用于提交事务。提交事务代表着将当前事务命令队列中的命令交给redis一并执行。

2.3 DISCARD(放弃事务)

DISCARD命令:用于放弃事务。放弃事务代表着销毁当前事务命令队列,不进行任何操作,同时当前客户端退出事务状态。

2.4 WATCH

WATCH命令:用于监视key的变化。由于redis支持多用户,通常在执行事务的过程中,不希望其它的用户修改我们正在操作的key。redis出于并发性能的考虑,不支持悲观锁的机制(通过阻塞或者报错来阻止其它用户修改上锁的数据),而是采用了类似乐观锁的机制。redis提供了WATCH命令来实现事务的“检查再设置”(CAS)行为,WATCH命令可以同时监听多个key的变化,在事务执行过程中一旦发现被监听的key被修改过,将会放弃执行事务,这时应该由用户来进行重试。

2.5 UNWATCH

UNWATCH 命令:用于解除WATCH状态。UNWATCH之后,当前客户端将解除所有的WATCH监听

3.redis事务—错误处理

在事务执行过程中可能会出现错误,redis将错误分为两类区别对待。

3.1语法错误(编译时错误)

语法错误,即redis执行的命令本身就是错误的,这类错误可以在事务真正执行之前就发现,例如参数不符合规范等。如同通用编程语言的编译时错误,由于这样的错误应当通过仔细的检查来完全避免,因此,redis在发现事务中存在语法错误时,会放弃整个事务。

3.2非语法错误(运行时错误)

非语法错误,即redis无法在真正执行命令之前发现的错误。例如incr要求数据必须是数字类型,而是否是数字类型,取决于运行时的状态。如同通用编程语言的运行时错误,由于这样的错误通常无法避免,因此,redis在发现命令存在非语法错误时,不会影响事务中其它命令的正常执行。

4.redis事务和脚本

redis在2.6版本后提供了非常灵活的脚本功能。脚本和事务类似,同样可以理解为一连串命令的执行,redis会将脚本一口气串行的执行完。redis脚本比事务更加的强大,事务能完成的任务,脚本也能完成。但相对而言,比起编写复杂的脚本,redis本身的事务特性是最简单的。

5.redis事务总结

redis作为一款非关系型数据库服务器,对事务的支持是远远比不上传统的关系型数据库的。redis事务不支持回滚,对事务ACID特性的支持也不尽如人意。但正因为redis功能的简单性,redis拥有极高的可用性。所以在实际业务选型时,应该扬长避短,不去过分依赖redis的事务特性,而是充分利用redis的高可用性,对于一些对事务要求很高的场合,转而使用传统的关系型数据库来满足需求。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

工程问题C++语言求解

工程问题C++语言求解

Delores M.Etter、Jeanine A.Ingber / 冯力、周凯 / 机械工业出版社 / 2014-8 / 79元

本书介绍了如何利用ANSIC++编程语言以基于对象的编程方式来解决工程问题。书中引用了大量来自于不同工程、科学和计算机科学领域的示例,是一本理论和实践结合紧密的教材。针对C++基本语法的各个部分,由浅入深地进行讲解。每讲解一部分基础知识,同时会结合多个相关实例,实例内容详实,紧贴所讲内容,使读者能够立刻对所学知识进行练习,实战性强。一起来看看 《工程问题C++语言求解》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

SHA 加密
SHA 加密

SHA 加密工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具