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

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

开发者学堂课程【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 应用基于分布式锁对应的场景控制。

相关文章
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中如何与事务隔离级别结合使用
乐观锁在分布式数据库中如何与事务隔离级别结合使用
202 5
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(二)Rest微服务工程搭建
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(二)Rest微服务工程搭建
469 0
|
消息中间件 Dubbo 应用服务中间件
分布式事物【Hmily实现TCC分布式事务、Hmily实现TCC事务、最终一致性分布式事务解决方案】(七)-全面详解(学习总结---从入门到深化)
分布式事物【Hmily实现TCC分布式事务、Hmily实现TCC事务、最终一致性分布式事务解决方案】(七)-全面详解(学习总结---从入门到深化)
426 0
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中如何与事务隔离级别结合使用
乐观锁在分布式数据库中如何与事务隔离级别结合使用
|
消息中间件 架构师 数据库
本地消息表事务:10Wqps 高并发分布式事务的 终极方案,大厂架构师的 必备方案
45岁资深架构师尼恩分享了一篇关于分布式事务的文章,详细解析了如何在10Wqps高并发场景下实现分布式事务。文章从传统单体架构到微服务架构下分布式事务的需求背景出发,介绍了Seata这一开源分布式事务解决方案及其AT和TCC两种模式。随后,文章深入探讨了经典ebay本地消息表方案,以及如何使用RocketMQ消息队列替代数据库表来提高性能和可靠性。尼恩还分享了如何结合延迟消息进行事务数据的定时对账,确保最终一致性。最后,尼恩强调了高端面试中需要准备“高大上”的答案,并提供了多个技术领域的深度学习资料,帮助读者提升技术水平,顺利通过面试。
本地消息表事务:10Wqps 高并发分布式事务的 终极方案,大厂架构师的 必备方案
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
1258 0
|
监控
Saga模式在分布式系统中保证事务的隔离性
Saga模式在分布式系统中保证事务的隔离性
259 4
Saga模式在分布式系统中如何保证事务的隔离性
Saga模式在分布式系统中如何保证事务的隔离性
309 7
|
SQL 关系型数据库 MySQL
乐观锁在分布式数据库中与事务隔离级别结合使用
乐观锁在分布式数据库中与事务隔离级别结合使用
295 3
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
694 1