欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

怎么利用数据库做分布式共享锁

程序员文章站 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

相关标签: 项目开发与总结