八、redis的事务及锁应用

redis事物及锁应用

过程:把命令输入后,就把命令放在队列里
打完exec,再集中执行

redis事物的执行

redis的事物开启multi
redis的语句普通命令
redis的失败取消 discard(所有放在队列中的语句都不执行)
redis成功exec

在mutil后面的语句中,语句出错可能有2种情况

语法错误,exec,直接报错,所以语句都不执行
语法本省没错,但使用对象有问题,exec之后,会执行正确的语句,跳过不正确的语句

思考

我在买票,ticket-1,money-100
而票只有一张,如果再我multi之后,和exec之前,票被别人买了,即ticket变成了0。我该如何观察这种情景,并不再提交。

对key进行检测,只要我设置监听后,一有人改动,我最后的exec就不能成功执行

具体的命令 watch命令
watch ticket
multi
decr ticket
decrby money 100
exec
(nil)返回nil,说明监视的ticket已经被改变了,事物就取消了
watch key1 key2 ……keyn
作用:监听key1 key2 keyn有没有变化,只要其中一个有变化,则事物取消(所有影响都失效)

unwatch

作用:取消所有的watch监听

你可能感兴趣的:(八、redis的事务及锁应用)