转自:https://blog.csdn.net/qq_38322527/article/details/112437041
什么是锁?
锁的作用:在进行数据库操作时,A 用户更新数据的同时B 用户不能更新!
如果没有锁的情况下,AB 同时更新数据,数据库中的数据为最后提交的数据。
在数据库设计上,锁分为悲观锁和乐观锁。
悲观锁
在数据库数据操作时,如果 A 用户查询到指定的数据,并增加 for update 属性后,
select * from user where id = 1 for update;
此时的数据库将该数据加锁,B 用户需要修改该数据,只能在 A 用户事务提交或断开连接后才能执行数据操作。
悲观锁基于数据库操作实现
。
乐观锁
基于算法实现。悲观锁在执行时,会将其他数据库请求拦截,使其他请求等待,而乐观锁在执行时不会阻碍其他请求。
参考:https://www.cnblogs.com/YMWH/articles/16467361.html
- 我们在redis中使用watch这个语法来对某一个值进行监控,在redis事务结束的时候,watch监控也就结束了。
- 如果redis中对某一个值进行监控后,有另一个进程对该值进行了修改,那么操作该值的事务会执行失败。
- 如果watch后的事务执行失败,可以使用unwatch进行解锁,然后再重新进行监视。
更多精彩内容:各种AI课程、技能课程、黑科技软件、网站小程序源码、副业小项目、PPT模板等精品素材、电商课程、推广引流课程等,尽在 天边资源网 。