为了账号安全,请及时绑定邮箱和手机立即绑定
释放锁的时候 get then delete 不是一个原子操作,可能存在竞态问题。在多线程环境中,如果两个线程几乎同时检查锁的值,并且它们都发现锁的值与自己的 UUID 匹配,那么它们都会尝试删除锁,从而可能导致其中一个线程误删另一个线程的锁。所以一般采用 lua 脚本:

```lua
local key = KEYS[1]
local value = ARGV[1]

if redis.call("GET", key) == value then
return redis.call("DEL", key)
else
return 0
end
```
点赞,点赞,点赞
挺好的,很基础,通俗易懂,逻辑清楚,赞
单机没演示不加锁是否存在超卖现象
清晰明了,我很有收获
你这个误删说得我这外行人都感觉有漏洞。一旦提前释放锁,就代表破坏了锁的作用,你去处理误删还有什么意义
这个老师讲的课是真的不错,赞
基础班的教学,带入门,包括举例说明,使用工具,逻辑清楚,实用性强。挺好的一门课
老师讲的很清楚,简单易懂
要是再完善些就好了
讲的很清晰,值得一听
课程须知
1、学习本课程需要拥有JavaSE、redis、SpringBoot环境搭建、maven基础 2、本课程需要有分布式基础,并推荐在工作中接触过分布式开发,有分布式锁需求的在职人员
老师告诉你能学到什么?
掌握分布式锁的实际运用,懂得如何运用redis做分布式锁。并了解到几种分布式锁实现方案的区别。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消