推荐链接: 总结——》【Java】 总结——》【Mysql】 总结——》【Redis】 总结——》【Kafka】 总结——》【Spring】 总结—
推荐链接:
总结——》【Java】
总结——》【Mysql】
总结——》【Redis】
总结——》【Kafka】
总结——》【Spring】
总结——》【SpringBoot】
总结——》【MyBatis、MyBatis-Plus】
总结——》【Linux】
总结——》【MongoDB】
总结——》【Elasticsearch】
// 加锁:如果 key 不存在,才会设置它的值,否则什么也不做SETNX lock_key 1// 业务逻辑DO THINGS// 释放锁,删除keyDEL lock_key
实现了加锁和释放锁
参考链接:
Redis——》死锁
Redis——》锁被别人释放
容易造成死锁
SET lock_key unique_value EX expire_time NX
GET判断锁是否归属自己,再DEL释放锁
//Lua脚本语言//释放锁,先判断这把锁是否归自己持有,比较unique_value是否相等,避免误释放if redis.call("get",KEYS[1]) == ARGV[1] then return redis.call("del",KEYS[1])else return 0end
实现了加锁和释放锁,不会出现死锁和释放别人的锁。
可能遇到的问题 | 解决方案 |
---|---|
死锁 | 设置过期时间 |
过期时间评估不好,锁提前过期 | 守护线程,自动续期 |
锁被别人释放 | 锁写入唯一标识,释放锁时先检查标识,再释放 |
来源地址:https://blog.csdn.net/weixin_43453386/article/details/132582133
--结束END--
本文标题: Redis——》实现分布式锁
本文链接: https://www.lsjlt.com/news/392695.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0