MySQL锁和分布式锁

MySQL锁分类:

1.按属性:

        共享锁:也叫读锁,允许其他事务访问,但只能对数据读不能写

        排他锁:只能自己对数据进行读写,其他事务不能读写。

2.按机制:

        乐观锁:提交前认为不会发生线程并发问题,再提交时对数据检查发现问题进行加锁的一种思想。

        悲观锁:总是认为会出现线程并发问题导致数据不安全进行加锁。

3.按粒度:行锁、表锁、间隙锁、页锁、记录锁、临键锁

分布式锁:

 为什么要使用分布式锁:

        1.在单进程系统中,多个线程访问一个数据进行同步操作产生的并发问题。

                解决:在java中可以通过synchronize和lock等手段来实现。

        2.在分布式环境中,其他多个进程可以通过线程访问数据造成并发。

                有哪些锁:可重入锁(避免死锁)、阻塞锁、公平锁

        3.分布式锁的解决方案:

                数据库:通过设置主键和唯一索引加锁判断,最后释放保存

                redis:通过setnx+ex实现,修改锁的状态以及过期时间。               

                Redission的看门狗:对锁进行监听是否过期,过期进行续期。

                zookeeper:1.临时节点+重试:先执行的线程在zookeeper中创建一个临时节点,获取到这个锁,其他线程要等待第一个线程执行完成释放第二个才能获取锁。

                                      2.临时顺序节点+重试:第一个节点先获取到锁,下一个节点监听上一个节点,等待上一个完成释放后,删除第一个节点,第二个节点取代第一个节点执行以此类推。

       

 

        

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值