怎么利用数据库做分布式共享锁
程序员文章站
2022-06-22 20:26:25
一、适用环境1. 数据库集群模式(1主多从)2. 单机数据库3. 数据库必须提供行级锁功能二、原理:cas算法代码 // 更新当前值为newupdateCurrentValue(id new, old);old:通过id 查到的值new:期望的值id:表的主键UPDATE user t SET t.CURRENT_VALUE=:new WHERE t.ID =:id AND t.CURRENT_VALUE=:old......
一、 适用环境
1. 数据库集群模式(1主多从)
2. 单机数据库
3. 数据库必须提供行级锁功能
二、 原理:cas算法
代码
// 更新当前值为new updateCurrentValue(id new, old);old:通过id 查到的值
new:期望的值
id:表的主键
UPDATE user t SET t.CURRENT_VALUE=:new WHERE t.ID =:id AND t.CURRENT_VALUE=:old
三 原理解析
1. 通过id获取CURRENT_VALUE的值作为old
2. 多线程情况下,有线程A更新了CURRENT_VALUE的值,那么当前线程更新就不成功。因为t.CURRENT_VALUE和old的值不相等。因为是行级锁,更新表数据的时候,只有一个线程执行。所以可以保证可以作为分布式共享锁
本文地址:https://blog.csdn.net/zhou920786312/article/details/107676304
上一篇: 荐 jQuery框架(六):文档操作、循环、css操作
下一篇: mysql 导出数据库总结