事务-死锁解决方案|学习笔记

简介: 快速学习事务-死锁解决方案

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

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


事务-死锁解决方案

 

内容介绍

一、分布式锁的解决方案

二、分布式锁改良

三、分布式锁时间限定的注意事项

 

一、分布式锁的解决方案

1、业务场景

依赖分布式锁的机制,某个用户操作时对应客户端宕机,且此时已经获取到锁。如何解决?

首先分析原因,制定解决方案,但其存在风险点,若想平稳发展需录入系统等。

2、业务分析

(1)由于锁操作由用户控制加锁解锁,必定会存在加锁后未解锁的风险

(2)需要解锁操作不能仅依赖用户控制,系统级别要给出相应的保底处理方案

 

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

解决方案

使用 expire 为锁 key 添加时间限定,到时不释放,放弃锁。

1、expire lock-key second

2、pexpire lock-key milliseconds

举例:首先清空所有,设定数据 set name 123,获取执行权限sexnx lock-name 锁住,设入时限expire lock-name 20即可。若20秒用完后get name可释放掉del lock name删除即可。若没删除需要setnx lock-name,另一客户端需要获取执行,一直锁不住,锁时需加上expirelock-name 20秒的时限设入即可,以上即是通过锁的形式来控制操作。

 

三、分布式锁时间限定的注意事项

由于操作通常都是微妙或毫秒级,因此该锁定时间不宜设置过长,通常是根据具体的业务和数据获取的平均值来决定。

例如:

1、持有锁的操作最长执行时间127ms,最短执行时间7ms。

2、锁时间设定推荐:最大耗时×120%+平均网络延迟×110%。

3、如果业务最大耗时<<网络平均延迟,通常为2个数量级,取其中单个耗时较长即可。

相关文章
|
SQL 数据库
商城数据库表设计介绍
商城数据库表设计介绍
2053 0
商城数据库表设计介绍
|
11月前
|
Oracle Ubuntu 关系型数据库
linux发行版对比
国内部分常用开源操作系统简要对比
523 5
|
Linux 测试技术 编译器
在go程序中的交叉编译
【7月更文挑战第9天】本文介绍Go 交叉编译允许在一种平台上构建适用于多平台的二进制文件。`go build -cover`用于覆盖率分析,`-coverpkg`控制分析的包范围,生成的二进制文件运行后,覆盖率数据会写入`GOCOVERDIR`指定的目录。
570 14
在go程序中的交叉编译
|
数据可视化 项目管理 UED
有哪些免费的设计协作工具?推荐六款实用工具
设计协作工具在跨团队合作和远程办公中发挥着重要作用,能打破沟通壁垒,促进实时交流与创意共享。文中介绍了六款实用工具:板栗看板、Pixso、Figma、Invision、Miro和Trello,它们各具特色,支持从项目管理到设计协作的多种需求。未来,这些工具将朝着功能集成化、智能化辅助、跨平台兼容性和增强第三方集成等方向发展,以提供更好的用户体验。
有哪些免费的设计协作工具?推荐六款实用工具
|
存储 数据可视化 JavaScript
可视化集成API接口请求+变量绑定+源码输出
可视化集成API接口请求+变量绑定+源码输出
356 4
|
监控 Java Linux
CPU被打满/CPU 100%:高效诊断与优化策略
【8月更文挑战第28天】在日常的工作与学习中,遇到CPU使用率飙升至100%的情况时,往往意味着系统性能受到严重影响,甚至可能导致程序响应缓慢或系统崩溃。本文将围绕这一主题,分享一系列高效诊断与优化CPU使用的技术干货,帮助大家快速定位问题并恢复系统性能。
850 1
|
开发框架 C语言 开发者
STM32寄存器操作、模板构建
【8月更文挑战第23天】本文档介绍STM32中的寄存器操作方法与模板构建技巧。寄存器是STM32控制内外设的核心,通过直接读写特定内存地址来进行操作。以配置GPIO为例,需定位寄存器地址并写入适当值。文档还提供了一个基本的代码模板,包括包含头文件、时钟配置、外设初始化及主函数流程,帮助开发者快速搭建开发框架,并强调了参考手册的重要性以确保正确使用。
473 1
|
机器学习/深度学习 存储 算法
算法时间复杂度分析
这篇文章讲解了如何分析算法的时间复杂度,包括关注循环执行次数最多的代码段、总复杂度的确定、嵌套代码复杂度的计算方法,并提供了大O阶的推导步骤和常见时间复杂度的列表,同时还介绍了空间复杂度的概念及其重要性。
|
机器学习/深度学习 自然语言处理 算法
深度学习的关键概念和网络结构
度学习是人工智能和机器学习的一个重要分支,它通过模拟人脑神经元的工作方式来处理复杂的模式识别和数据分析任务。深度学习已经在许多领域取得了显著的成果,如图像识别、语音识别和自然语言处理。
394 1