分布式锁

(1) 数据库的乐观锁

乐观锁机制其实就是在数据库表中引入一个版本号(version)字段来实现的。
当我们要从数据库中读取数据的时候,同时把这个version字段也读出来,如果要对读出来的数据进行更新后写回数据库,则需要将version加1,同时将新的数据与新的version更新到数据表中,且必须在更新的时候同时检查目前数据库里version值是不是之前的那个version,如果是,则正常更新。如果不是,则更新失败,说明在这个过程中有其它的进程去更新过数据了。

(2)数据库的悲观锁 排他锁

在这里插入图片描述

通过for update 操作对该条记录加上悲观锁,行级锁只有在innoDB 中加了索引才有,否则只有表级锁。加上锁后其他线程都不能访问。

(3)redis 实现

依赖redis 的原子性实现 setnx key value px 1000

该操作只有在key 值不存在的情况下才能执行,如果多个线程去执行该操作只有一个线程能够执行成功,然后执行业务流程后,删除该key就ok了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值