Redis事务处理

Redis事务让一组命令在单个步骤中执行。事务中有两个属性,这说明如下:
在一个事务中所有命令按顺序执行作为一个单一独立的操作。这是不可能的,到另一个客户端发出的请求被担任过Redis事务的执行过程中。
Redis事务也是原子的。原子就意味着要么所有命令都执行,要么都不进行处理。

我来实现一个抽奖的逻辑:

抽奖者A,有1次抽奖机会,目前奖金为1000,他抽到了1个奖金为500的奖品。如何使用redis实现这个过程。

首先,我用hash类型表示抽奖者A的相关属性

> hmset manA times 1 money 1000
OK
> hgetall manA
1) "times"
2) "1"
3) "money"
4) "1000"

OK,下面,我使用事务,实现这个过程:

> hincrby manA times -1  #抽奖次数减1
QUEUED
> hincrby manA money 500  #奖金增加500元
QUEUED
> lpush price manA+500    #添加到流水记录中
QUEUED
> exec
1) 0
2) 1500
3) 1

进行一次查询:

> hgetall manA
1) "times"
2) "0"
3) "money"
4) "1500"

结果是抽奖次数变为0,而奖金数变为1500

如下表所示,Redis的事务相关的一些基本命令:

S.N. 命令 & 说明
1 DISCARD 
发出命令MULTI后丢弃所有
2 EXEC 
MULTI后执行发出所有命令
3 MULTI 
标记事务块的开始
4 UNWATCH 
取消所有的对应关注键
5 WATCH key [key ...] 
关注给定项,以确定执行MULTI/EXEC块
参考连接( http://www.yiibai.com/redis/redis_transactions.html
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值