redis07(事物和锁机制)

Redis与mysql事务的对比:

        Mysql:

        开启:start transaction        语句:普通sql        失败:rollback(回滚)        成功:commit

        Redis:

        开启:muitl                        语句:普通命令        失败:discard(取消)        成功:exec


rollback与discard 的区别:

        如果已经成功执行了2条语句, 第3条语句出错。Rollback后,前2条的语句影响消失。Discard只是结束本次事务,前2条语句造成的影响仍然还在

redis事物中的乐观锁(watch监听):

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

悲观锁:

        世界充满危险,肯定有人和我抢, 给 ticket上锁, 只有我能操作. [悲观锁]

乐观锁:

        没有那么人和我抢,因此,我只需要注意有没有人更改ticket的值就可以了

        Redis的事务中,启用的是乐观锁,只负责监听key没有被改动.

watch key1 key2  ... keyN

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

unwatch

        作用:取消所有watch监听

你可能感兴趣的:(redis07(事物和锁机制))