【Redis笔记(七)】 Redis中的事务

原创作品,转载请标明:http://blog.csdn.net/Xiejingfa/article/details/50675302

在【Redis学习笔记】前面几篇文章中,我们简单介绍了Redis中的五种数据结构相关的命令,今天,我们来介绍一下Redis中的事务Transaction。


一、什么是事务

如果你之前接触过MySQL、Oracle等数据库,一定听说过“事务”的概念。所谓事务,是指作为单个逻辑工作单元执行的一系列操作,要么全部完全地执行,要么全部都不执行。Redis中“事务”的概念与诸如上述的数据库中“事务”一致,可以一次性执行多个Redis命令,并保证以下两点:

  1. 事务是一个单独的隔离操作:一个事务中的命令逐一按顺序执行。
  2. 事务是一个原子性操作:原子性就意味着一个事务中的所有命令要么全部执行,要么全都不执行。

二、Redis中事务操作

1、相关命令介绍

Redis提供了五个与事务相关的命令:

序号命令功能
1multi标识一个事务的开始
2exec执行某事务块内的所有命令
3watch key…监视一个或多个key,如果在事务执行之前这些被监视的key被其他命令修改,这该事务则被取消
4unwatch取消watch命令对所有key的监视
5discard放弃执行事务

2、实例操作

Redis中的一个事务从开始到结束需要经历三个阶段:

  1. 声明事务
  2. 命令入队(一个或多个命令)
  3. 执行事务

下面通过实例来讲解一下上述命令的使用:

示例1:声明并执行事务

127.0.0.1:6379> multi   // 声明事务
OK
127.0.0.1:6379> set mykey transaction_test      // 命令1入队
QUEUED
127.0.0.1:6379> lpush mylist redis mysql transaction    // 命令2入队    
QUEUED
127.0.0.1:6379> lrange mylist 0 -1      // 命令3入队
QUEUED
127.0.0.1:6379> exec    // 执行事务
1) OK
2) (integer) 3
3) 1) "transaction"
   2) "mysql"
   3) "redis"

实例2:取消事务

127.0.0.1:6379> multi
OK
127.0.0.1:6379> set mykey 1
QUEUED
127.0.0.1:6379> incr mykey
QUEUED
127.0.0.1:6379> get mykey
QUEUED
127.0.0.1:6379> discard
OK
127.0.0.1:6379> exec
(error) ERR EXEC without MULTI
127.0.0.1:6379> get mykey
(nil)

示例3: 利用两个客户端演示watch命令

我们先在命令终端输入redis-cli,然后敲入以下命令:

127.0.0.1:6379> set mykey 1
OK
127.0.0.1:6379> get mykey 
"1"
127.0.0.1:6379> watch mykey
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> incr mykey
QUEUED
127.0.0.1:6379> incr mykey
QUEUED

接着,我们又打开另一个命令终端,修改mykey的值为3,具体如下:

127.0.0.1:6379> get mykey
"1"
127.0.0.1:6379> set mykey 3
OK

最后,我们回到第一个终端,执行事务,可以看到之前multi声明的事务已经被取消。如下:

127.0.0.1:6379> exec
(nil)
127.0.0.1:6379> get mykey
"3"
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值