redis分布式锁实现高并发简单例子

单体项目springboot快速搭建完毕,控制层代码

 浏览器访问后单线程访问没有问题

多线程访问代码改造如下

 部署两个节点,springboot下修改端口,启动两个服务

配置nginx

 jmeter模拟200并发请求,jvm 同步锁会出现bug.重复卖的问题

redis锁实现分布式锁

 

 

 

 

类似lua脚本,下面那句代码原子性的实现上两句代码的功能,保持每个请求的时间一致的话问题不大,如果并发请求每个执行时间有差异,会导致锁永久失效,比如第一个请求执行到一半锁时间过期了,第二个请求就可以进来拿到锁,那么第一个请求最后释放的就是第二个请求的锁,依次类推那么就会导致锁永久失效

 进一步优化:锁的值为每个请求进来生成的一个UUID,锁释放之前进行判断是不是自己加的锁的值

 

 

现在问题是每个请求的时间和锁的过期时间怎么把握。

redisson分布式锁框架,

引入依赖

 

 

 

实现原理

 

 代码

lua脚本

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值