本文实例讲述了redis中的事务操作。分享给大家供大家参考,具体如下:
redis与mysql的事务
Redis支持简单的事务
简单使用
讲张三的100圆钱转账给lisi:
set zhangsan 800 set lisi 100 multi decrby zhangsan 100 incrby lisi 100 exec
失败的两种情况
在mutil后面的语句中, 语句出错可能有2种情况,还是以转账的情况来分析:
(1)语法就有问题
127.0.0.1:6379> multi OK 127.0.0.1:6379> decrby zhang 100 QUEUED 127.0.0.1:6379> hasdfasdf (error) ERR unknown command 'hasdfasdf' 127.0.0.1:6379> exec (error) EXECABORT Transaction discarded because of previous errors. 127.0.0.1:6379> mget zhang wang 1) "800" 2) "100"
这种,exec时,报错, 所有语句得不到执行,所以还是800和100圆
(2)语法本身没错,但适用对象有问题
127.0.0.1:6379> multi OK 127.0.0.1:6379> decrby zhang 100 QUEUED 127.0.0.1:6379> sadd wang 1 QUEUED 127.0.0.1:6379> exec 1) (integer) 700 2) (error) WRONGTYPE Operation against a key holding the wrong kind of value 127.0.0.1:6379> mget zhang wang 1) "700" 2) "100"
Exec之后,会执行正确的语句,并跳过有不适当的语句,所以这里是一个700圆一个100圆了
案例
假设买票案例,当前只有1张票和100块钱,如果我在买票的过程中,在我multi之后,和exec之前,票被别人买了—即ticket已经变成0了,然后我们执行exec的时候就会将票变为-1,这就不对了。
127.0.0.1:6379> set ticket 1 OK 127.0.0.1:6379> set money 100 OK 127.0.0.1:6379> multi OK 127.0.0.1:6379> decr ticket QUEUED 127.0.0.1:6379> decrby money 10 QUEUED 127.0.0.1:6379> exec 1) (integer) -1 2) (integer) 90
使用watch来检测票有没有被买走
实用watch
来检测指定的key,负责监测key没有被改动。
127.0.0.1:6379> set ticket 1 OK 127.0.0.1:6379> set money 100 OK 127.0.0.1:6379> watch ticket OK 127.0.0.1:6379> multi OK 127.0.0.1:6379> decr ticket QUEUED 127.0.0.1:6379> decrby money 10 QUEUED 127.0.0.1:6379> exec (nil)//返回nil,说明监视的ticket已经改变了,事务就取消了. 127.0.0.1:6379> mget ticket money 1) "0" 2) "100"
在执行exec之前,票被买走了,ticket为0了,然后执行exec后,发现ticket被动了,所以就不执行事务了,事务被取消了。在执行exec的时候返回nil
。
watch相关用法
watch key1 key2 ... keyN
作用:监听key1 key2..keyN有没有变化,如果有变, 则事务取消
unwatch
作用:取消所有watch监听
希望本文所述对大家Redis数据库程序设计有所帮助。
标签:
redis,事务操作
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
白云城资源网 Copyright www.dyhadc.com
暂无“redis中的事务操作案例分析”评论...
更新日志
2024年05月10日
2024年05月10日
- 欢乐钓鱼大师新手怎么玩 欢乐钓鱼大师新手游玩攻略
- 【古典音乐】《美妙的管弦乐作品(第一辑)》2CD.1999[FLAC+CUE]
- 【古典音乐】《美妙的管弦乐作品(第二辑)》2CD.1999[FLAC+CUE/整轨]
- KOKIA吉田亚纪子-pearl~TheBestCollection~[flac]
- 剧版《美末》S2大量片场照曝光!WLF首次亮相
- PS掌机受欢迎程度超预期!最新赞誉宣传片释出
- 《夜族崛起》公开1.0正式版预告 将结束两年漫长EA!
- 雷安娜.1984-不再一样(2007年环球复黑版)【环球】【WAV+CUE】
- PUCK.2024-天蓝色的彼岸(EP)【派嗨拜浪】【FLAC分轨】
- 钱昭颖.2022-KNOWING【环星】【WAV分轨】
- 煲机极品《炸10Hz》[WAV分轨][550M]
- 《蔡琴127首单曲合集》单曲100M极品音质[WAV分轨][15G]
- 任贤齐《爱像太平洋/跨海三部曲》 2CD [WAV][561M]
- 欢乐钓鱼大师如何获得双倍经验 欢乐钓鱼大师获得双倍经验方法
- 物华弥新迷踪盘第二十关怎么过 迷踪盘第二十关通关方法