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监听

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容