事务-分布式锁|学习笔记

简介: 快速学习事务-分布式锁

开发者学堂课程【Redis 入门到精通(进阶篇)事务-分布式锁】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/765/detail/13435


事务-分布式锁

 

内容介绍

一、基于特定条件的事务执行

二、基于特定条件的事务执行——分布式锁

 

一、 基于特定条件的事务执行

业务场景:

天猫双11热卖过程中,对已经售空的货物追加补货,且补货完成。客户购买热情高涨,3秒内将所有商品购买完毕。本次补货已经将库存全部清空,如何避免最后一件商品不被多人同时买?【超卖问题】

业务分析:

1、 使用 watch 监控一个 key 有没有改变已经不能解决问题,此处要监控的是具体数据

用 watch 监控购买数量或库存数量,这是不解决问题的;因为监控的数量值在不停的改变。

2、 redis 是单线程的,多个客户端对于同一数据同时操作 要避免不被同时修改。

 

 

二、基于特定条件的事务执行——分布式锁

1、解决方案

(1)、使用 setnx 设置一个公共锁,锁一个对应的 key

setnx lock-key value

利用setnx命令的返回值特征,有值则返回设置失败,无值则返回设置成功。

对于返回设置成功的,拥有控制权,进行下一步的具体业务操作。

对于返回设置失败的,不具有控制权,排队或等待。

操作完毕通过 del 操作释放锁。

(2)、代码演示

清空所有数据后操作数据

127.0.0.1:6379> set num 10

Ok

127.0.0.1:6379> setnx lock num 1

<inleger> 1

//加锁

127.0.0.1:6379> incryby num -1

<inleger> 9

127.0.0.1:6379>del lock num

<inleger> 1

在另外一个客户端下

127.0.0.1:6379> setnx lock num 1

<inleger> 1

注意:上述解决方案是一种设计概念,依赖规范保障,具有风险性

真正操作的是 number,但规定的为锁,前提是必须锁同一把锁,若一个锁 lock number,另一个锁 number lock,那么将会失败。

redis 应用基于分布式锁对应的场景控制。

相关文章
|
4月前
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中如何与事务隔离级别结合使用
乐观锁在分布式数据库中如何与事务隔离级别结合使用
|
7月前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(二)Rest微服务工程搭建
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(二)Rest微服务工程搭建
175 0
|
7月前
|
消息中间件 Dubbo 应用服务中间件
分布式事物【Hmily实现TCC分布式事务、Hmily实现TCC事务、最终一致性分布式事务解决方案】(七)-全面详解(学习总结---从入门到深化)
分布式事物【Hmily实现TCC分布式事务、Hmily实现TCC事务、最终一致性分布式事务解决方案】(七)-全面详解(学习总结---从入门到深化)
207 0
|
2月前
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中如何与事务隔离级别结合使用
乐观锁在分布式数据库中如何与事务隔离级别结合使用
|
14天前
|
消息中间件 架构师 数据库
本地消息表事务:10Wqps 高并发分布式事务的 终极方案,大厂架构师的 必备方案
45岁资深架构师尼恩分享了一篇关于分布式事务的文章,详细解析了如何在10Wqps高并发场景下实现分布式事务。文章从传统单体架构到微服务架构下分布式事务的需求背景出发,介绍了Seata这一开源分布式事务解决方案及其AT和TCC两种模式。随后,文章深入探讨了经典ebay本地消息表方案,以及如何使用RocketMQ消息队列替代数据库表来提高性能和可靠性。尼恩还分享了如何结合延迟消息进行事务数据的定时对账,确保最终一致性。最后,尼恩强调了高端面试中需要准备“高大上”的答案,并提供了多个技术领域的深度学习资料,帮助读者提升技术水平,顺利通过面试。
本地消息表事务:10Wqps 高并发分布式事务的 终极方案,大厂架构师的 必备方案
|
1月前
|
监控
Saga模式在分布式系统中保证事务的隔离性
Saga模式在分布式系统中保证事务的隔离性
|
3月前
Saga模式在分布式系统中如何保证事务的隔离性
Saga模式在分布式系统中如何保证事务的隔离性
|
7月前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
299 0
|
5月前
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中与事务隔离级别结合使用
乐观锁在分布式数据库中与事务隔离级别结合使用
|
7月前
|
消息中间件 Java 关系型数据库
Spring事务与分布式事务
这篇文档介绍了事务的概念和数据库事务的ACID特性:原子性、一致性、隔离性和持久性。在并发环境下,事务可能出现更新丢失、脏读和不可重复读等问题,这些问题通过设置事务隔离级别(如读未提交、读已提交、可重复读和序列化)来解决。Spring事务传播行为有七种模式,影响嵌套事务的执行方式。`@Transactional`注解用于管理事务,其属性包括传播行为、隔离级别、超时和只读等。最后提到了分布式事务,分为跨库和跨服务两种情况,跨服务的分布式事务通常通过最终一致性策略,如消息队列实现。
81 0