首页 > 其他分享 >悲观锁和乐观锁

悲观锁和乐观锁

时间:2022-11-11 23:12:15浏览次数:24  
标签:悲观 WATCH 乐观 key 执行 上锁

1、悲观锁

截图.png

悲观锁(Pessimistic Lock), 顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。

2、乐观锁

截图.png

乐观锁(Optimistic Lock), 顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号等机制。乐观锁适用于多读的应用类型,这样可以提高吞吐量。Redis就是利用这种check-and-set机制实现事务的。

3、WATCH key [key ...]

在执行multi之前,先执行watch key1 [key2],可以监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。

4、unwatch

取消 WATCH 命令对所有 key 的监视。

如果在执行 WATCH 命令之后,EXEC 命令或DISCARD 命令先被执行了的话,那么就不需要再执行UNWATCH 了。

标签:悲观,WATCH,乐观,key,执行,上锁
From: https://www.cnblogs.com/tanhongwei/p/16882354.html

相关文章

  • 秒杀实现 乐观锁
    @RestControllerpublicclassHelloWorld{@GetMapping("hello")publicResulthello(){Integeruid=(int)(Math.random()*100);String......
  • 悲观锁和乐观锁
    1.悲观锁 每次操作之前都上锁,操作完之后解锁2.乐观锁总是假设最好的情况,每次去拿数据的时候都认为别人不会修改,所以不会上锁,只在更新的时候会判断一下在此期间别人有没......
  • 【博学谷学习记录】超强总结,用心分享|Java基础分享-乐观锁与悲观锁
    目录一、悲观锁与乐观锁二、乐观锁的基础——CAS三、自旋锁四、synchronized锁升级:偏向锁→轻量级锁→重量级锁五、可重入锁(递归锁)六、公平锁、非公平锁七、可......
  • mysql乐观锁实现
    为何Redis用乐观锁,而MySQL数据库却没有mysql也有乐观锁乐观锁假设数据一般情况下不会造成冲突,所以在数据进行提交更新的时候,才会正式对数据的冲突与否进行检测,如果发现冲突......
  • MySQL数据库中乐观锁和悲观锁【杭州多测师】【杭州多测师_王sir】
    悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传统的关系型数据库里边就用到了......
  • 封装一个简单的乐观锁方法 -基于Laravel 8
    在模型文件中写入以下代码:/***@function实现一个简单的laravel乐观锁*@returnint受影响的函数*@othervoid*/publicfuncti......
  • 又一例 select for update 的悲观锁使用所引发的血案
    1.事故描述昨日上午十点多,我们的基础应用发生生产事故。具体表象为系统出现假死无响应。2.硬件LB查看硬件负载路由情况:ARRAY-3(config)#shstatislrtcpJiChuYinYong_......
  • 一分钟教你知道乐观锁和悲观锁的区别
    悲观锁(PessimisticLock),顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁。传统的关......
  • 悲观锁与乐观锁
    何谓悲观锁与乐观锁乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说......
  • 乐观锁
              ......