Home > Database > Mysql Tutorial > body text

Redis事物介绍与应用

WBOY
Release: 2016-06-07 17:22:26
Original
923 people have browsed it

研究reids与使用已经有几个月的时间,中间自己总结了不少文档以及相关资料,接下来时间,会陆续分享一些相关资料,并且介绍其在我

研究reids与使用已经有几个月的时间,中间自己总结了不少文档以及相关资料,接下来时间,会陆续分享一些相关资料,并且介绍其在我们应用中的使用情况。

下面是redis事物的相关介绍(参考redis.io):

一.事物的使用

1.Redis事物通过MULTI命令开始。 这条命令总是返回OK。

2.然后用户可以执行多条指令,redis不会马上执行这些指令,,还只是放入到队列中。

3.当执行exec指令时,所有的指令执行。

4.调用discard指令,将会flush事物队列,并且退出事物。

如下:

redis 127.0.0.1:6379> multi

OK

redis 127.0.0.1:6379> set foo 1

QUEUED

redis 127.0.0.1:6379> incr foo

QUEUED

redis 127.0.0.1:6379> incr foo

QUEUED

redis 127.0.0.1:6379> exec

1) OK

2) (integer) 2

3) (integer) 3

 

从以上会话中能看到multi命令返回的回复是一个数组,每个元素即是事物中每条指令的回复,并且跟指令发布的顺序一样。当redis连接在multi请求下,所有的命令回复都是queued,除非这条指令的语句法不正确。而一些指令语法正确,但执行阶段出错也是允许的。

如以下

redis 127.0.0.1:6379> multi

OK

redis 127.0.0.1:6379> set t 13

QUEUED

redis 127.0.0.1:6379> lpop t

QUEUED

redis 127.0.0.1:6379> exec

1) OK

2) (error) ERR Operation against a keyholding the wrong kind of value

对于这种err,需要客户端给予合理的提示。

需要注意的是,所有在队列中的指令都会被执行,redis不会终止指令的执行。

二.取消队列指令
Discard为取消命令队列。可以终断一个事物。不会有命令会被执行,并且连接的状态是正常的。

如:

> SET foo 1

OK

> MULTI

OK

> INCR foo

QUEUED

> DISCARD

OK

> GET foo

"1"

linux

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template