redis事务有什么用


本文摘自PHP中文网,作者藏色散人,侵删。

Redis事务

MULTI, EXEC, DISCARD and WATCH 是Redis事务的基础。用来显式开启并控制一个事务,它们允许在一个步骤中执行一组命令。并提供两个重要的保证:

● 事务中的所有命令都会被序列化并按顺序执行。在执行Redis事务的过程中,不会出现由另一个客户端发出的请求。这保证 命令队列 作为一个单独的原子操作被执行。

● 队列中的命令要么全部被处理,要么全部被忽略。EXEC命令触发事务中所有命令的执行,因此,当客户端在事务上下文中失去与服务器的连接,

● 如果发生在调用MULTI命令之前,则不执行任何commands;

● 如果在此之前EXEC命令被调用,则所有的commands都被执行。

同时,redis使用AOF(append-only file),使用一个额外的write操作将事务写入磁盘。如果发生宕机,进程奔溃等情况,可以使用redis-check-aof tool 修复append-only file,使服务正常启动,并恢复部分操作。(推荐:《Redis视频教程》)

用法

使用MULTI命令显式开启Redis事务。 该命令总是以OK回应。此时用户可以发出多个命令,Redis不会执行这些命令,而是将它们排队。EXEC被调用后,所有的命令都会被执行。而调用DISCARD可以清除事务中的commands队列并退出事务。

以下示例以原子方式,递增键foo和bar。

1

2

3

4

5

6

7

8

9

>MULTI

OK

>INCR foo

QUEUED

>INCR bar

QUEUED

>EXEC

1)(整数)1

2)(整数)1

从上面的命令执行中可以看出,EXEC返回一个数组,其中每个元素都是事务中单个命令的返回结果,而且顺序与命令的发出顺序相同。

当Redis连接处于MULTI请求的上下文中时,所有命令将以字符串QUEUED(从Redis协议的角度作为状态回复发送)作为回复,并在命令队列中排队。只有EXEC被调用时,排队的命令才会被执行,此时才会有真正的返回结果。

以上就是redis事务有什么用的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

redis支持事务吗

redis事务有什么用

更多相关阅读请进入《redis事务》频道 >>


数据库系统概念 第6版
书籍

数据库系统概念 第6版

机械工业出版社

本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...