我是靠谱客的博主 怕孤单舞蹈,最近开发中收集的这篇文章主要介绍答面试官问:如何防超卖,有几种实现方式场景,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

场景

在这里插入图片描述

第一种方法 悲观锁

总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。

简而言之,悲观锁主要用于保护数据的完整性。当多个事务并发执行时,某个事务对数据应用了锁,则其他事务只能等该事务执行完了,才能进行对该数据进行修改操作。

第二种办法 乐观锁

乐观锁( Optimistic Locking ) 相对悲观锁而言,乐观锁假设认为数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突了,则让返回用户错误的信息,让用户决定如何去做。

第三种方法 redis 消息队列

在秒杀的情况下,高频率的去读写数据库,会严重造成性能问题。所以必须借助其他服务, 利用 redis 的单线程预减库存。比如商品有 100 件。那么我在 redis 存储一个 k,v。例如

每一个用户线程进来,key 值就减 1,等减到 0 的时候,全部拒绝剩下的请求。

那么也就是只有 100 个线程会进入到后续操作。所以一定不会出现超卖的现象。

第四种办法 redis 分布式锁

待续更新…

最后

以上就是怕孤单舞蹈为你收集整理的答面试官问:如何防超卖,有几种实现方式场景的全部内容,希望文章能够帮你解决答面试官问:如何防超卖,有几种实现方式场景所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(65)

评论列表共有 0 条评论

立即
投稿
返回
顶部