七叶笔记 » 数据库 » redis中的事务操作案例分析

redis中的事务操作案例分析

失败的两种情况

在mutil后面的语句中, 语句出错可能有2种情况,还是以转账的情况来分析:

(1)语法就有问题

这种,exec时,报错, 所有语句得不到执行,所以还是800和100圆

(2)语法本身没错,但适用对象有问题

Exec之后,会执行正确的语句,并跳过有不适当的语句,所以这里是一个700圆一个100圆了

案例

假设买票案例,当前只有1张票和100块钱,如果我在买票的过程中,在我multi之后,和exec之前,票被别人买了—即ticket已经变成0了,然后我们执行exec的时候就会将票变为-1,这就不对了。

使用watch来检测票有没有被买走

实用watch来检测指定的key,负责监测key没有被改动。

在执行exec之前,票被买走了,ticket为0了,然后执行exec后,发现ticket被动了,所以就不执行事务了,事务被取消了。在执行exec的时候返回nil。

watch相关用法

作用:监听key1 key2..keyN有没有变化,如果有变, 则事务取消

作用:取消所有watch监听

希望本文所述对大家Redis数据库程序设计有所帮助。

相关文章