是不是redis分布式锁还是会有一人两单问题啊。比如用户第一次抢购由于业务卡顿,导致锁过期失效了。这个用户又发了一次请求得到了锁,又执行了一次抢购。这不就两单了吗。后面讲的redisson,用了watchdog如果你阻塞太久也会释放锁,不还是会导致一人两单
全部评论
redisson作用是自动续期,可重入和可重试。一人一单和加不加锁没太大关系,把“判断库存->判断用户下单次数->扣减库存”打成一个原子操作是一人一单的关键。
3 回复 分享
发布于 03-27 16:16 广东
锁到期需要进行补偿操作吧
点赞 回复 分享
发布于 03-28 17:57 广东
不用锁也能一人一单
点赞 回复 分享
发布于 03-27 11:13 上海
redis分布式锁并不能完全保证这个 如果需要高可用 强一致性 需要上zookeeper或者etcd
点赞 回复 分享
发布于 03-25 11:53 广东
redis分布式锁是在redis+lua脚本原子性判断库存充足了之后异步线程创建订单时的第二个保障,虽然 Redis + Lua 保证了库存的原子性,但是如果订单创建失败(例如数据库异常),库存已经减少了,这可能会导致实际库存与数据库库存不一致。 优化: 双写一致性保障:使用 事务消息(RocketMQ/RabbitMQ 的事务特性),先预减库存,再落库成功后确认库存扣减,否则回滚。
点赞 回复 分享
发布于 03-19 17:58 河南
加上事务就行了吧
点赞 回复 分享
发布于 03-15 13:25 辽宁
虎哥说了加不加锁没有影响
点赞 回复 分享
发布于 03-02 22:10 安徽
问题是黑马点评没用分布式锁啊
点赞 回复 分享
发布于 03-02 22:10 安徽
所以需要业务保障幂等性
点赞 回复 分享
发布于 03-02 17:05 安徽

相关推荐

12-10 10:39
已编辑
门头沟学院 Java
一面boss面谈谈项目,聊聊日常什么的,人很和善二面技术面连环问Q.谈谈redis,起了啥作用Q.Redis是单线程还是多线程?为什么快?Q.redis你用过哪些数据类型Q.你是怎么设置和存k的Q.reeds里你存过map吗,可以存吗,存了之后会和redis本身的键值对冲吗Q.说下MapQ.你为什么用CurrentHashMap而不HashMap?你用它存了什么?Q.CurrentHashMap为啥线程安全Q.CHM加了什么锁?Q.你的项目里,线程怎么就面临不安全问题了,线程安全问题体现在哪里Q.知道项目怎么打包吗?怎么把项目打包成特定的名称?默认打包完的jar包不能用吧Q.假如你的prooertis配置项的中文注释乱码了,你能解决吗?Q.怎么在windows环境运行一个jar包,linux里呢Q.整个项目启动完,这是个进城还是线程?Q.一个项目默认的线程池是多少,怎么查看?Q.你的项目咋配的线程池Q.音视频数据是怎么传输的?Q.springboot内嵌的服务器是什么?Q.你说的netty是个插件吧Q.tomcat基于什么,干啥的Q.那你说下nrtty基于什么?Q.NIO是什么,和网络协议有关吗Q.你的netty会对Tomcat造成影响吗?Q.Http基于什么?能不能处理UDP?Q.我看你项目用到了websoket,tomcat不能处理吗?为啥要用netty呢Q.Tomcat能不能处理UDPQ.netty都能处理什么请求协议Q.http,https,tcp,UDP分得清吗Q.知道AOP吗?它能做什么功能Q.AOP能对所有方法全局配置吗
查看60道真题和解析
点赞 评论 收藏
分享
评论
点赞
20
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务