Redis中事务的使用

来源:互联网 发布:android app商城源码 编辑:程序博客网 时间:2024/06/06 03:14

1.Redis与MySQL事务对比


(1)rollback与discard的区别:
如果已经成功执行了2条语句,第3条出错
rollback后,前2条语句造成的影响消失
discard前2条语句造成的影响仍然存在
(2)multi后面的语句出错可能有两种情况:
a.语法本身有问题,这种情况所有语句都不会执行
b.语法本身没有问题,但适用对象有问题,比方使用zadd命令操作lists对象。exec后,执行正确的语句,跳过不适当的语句
(3)思考买票的场景
假设现在只有一张票,而买票的人很多,因此就要注意自己买票时是否还有余票
redis的事务中,启动的是乐观锁,只负责监视key有没有被改动
set number 1 //票的数量为1张
set money 100 //账户余额为100
watch number money //为了保证有票及账户余额充足,这里两个都监视
multi //开启事务
decr number //票数减一
decyby money 55 //账户余额减少
exec //执行事务
为了测试,可再开启一个终端,在exec前修改number和money的值,观察执行的结果
可以看到,number和money中任意一个发生改变,事务都将无法执行

1 0
原创粉丝点击