1、悲观锁
原理:MySQL update单线操作。
操作:select 语句 添加for update,
结束事件:1、commit 2、线程结束 3、断开数据库
2、乐观锁
原理:cas原理,ABA问题
ABA问题解决方案:添加版本号
操作:在数据库中添加version字段,在更新的时候添加version是否相等,同时version+1
例子:
UPDATE t_goods
SET STATUS = 2,
version = version + 1
WHERE
id = #{id}
and version=#{version};
3、redis锁
lua脚本语言实现
网友评论