Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >并发场景下常见的锁及简单使用

并发场景下常见的锁及简单使用

作者头像
lin_zone
发布于 2020-04-15 10:14:36
发布于 2020-04-15 10:14:36
70700
代码可运行
举报
文章被收录于专栏:LIN_ZONELIN_ZONE
运行总次数:0
代码可运行

1.MySQL悲观锁

悲观锁:顾名思义,对待过来的请求持比较悲观的态度,在处理请求的整个过程中,将数据锁定,不允许其他进程/线程 修改

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
set autocommit=0;
begin;
select * from table where id = xx for update; //互斥锁      //InnoDB 必须明确索引字段的值(查询需走索引),否则会将整个表的数据都加锁
// select * from table where id = xx lock in share mode;		// 共享锁,容易造成死锁,谨慎使用
......
// 对数据进行操作
......
commit;

当session1执行完 select * from table where field = xx for update; (field需要是索引字段) 的时候 就将那一行的数据锁定了,此时 session2 再来执行 for update 或者 修改此条数据的操作的时候就会被阻塞

注:MySQL 悲观锁 虽然数据可以保证绝对正确,但是并发效率极低,一般不使用

  1. MySQL乐观锁 乐观锁:顾名思义,对待过来的请求持比较乐观的态度,先假设不会冲突,在提交更新的时候再去检验数据有没有被其他进程修改过,如果中间有被其他进程修改过起冲突了,则返回错误 乐观锁的实现
  2. 版本控制 感兴趣的话可以看一下MySQL的MVCC的实现原理(InnoDB默认的可重复读隔离级别) MVCC 原理 大致是这样的:

数据库有隐藏的创建版本和删除版本的字段,每次开始事务的时候,事务版本号都会自增

新增数据的时候,在对应的创建版本号的地方填上 当前事务的版本号

更新数据的时候,将要更新的数据行的删除版本号填上当前事务的版本号,然后插入一条新数据,创建版本号 填上 当前事务的版本号

删除数据的时候,将要删除的数据行的删除版本号填上当前事务的版本号

查询数据的时候,查询 删除版本号大于当前事务的版本号 或 创建版本号小于等于当前事务的版本号且删除版本号为空

代码语言:txt
AI代码解释
复制
2.在where 条件中进行限制
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 在秒杀场景中的使用
1. 将库存字段设置为 unsigned int 类型,库存一直减,减到负数就直接报错,应用程序捕获这个错误进行处理这种方式依赖数据库抛异常,算是数据库设计的一种技巧,不算乐观锁
2. 更新库存的时候,直接 update table set remain_amount = remain_amount - num where id = xx and remain_amount >= num							// num 是一个
3. 结合 12
 

3.Redis 分布式锁 参考 石杉的架构笔记--Redis分布式锁的实现原理

1.原理大概是这样的(Redis可能是一个集群,这里就当做是单机的场景,集群的话 加锁只给master节点加锁):

  1. Redis 是单进程单线程的,不涉及到锁的问题,至于Redis的并发是借助 I/O多路复用( Epoll)实现
  2. 请求进来后先检查 resource_str 这个hash类型的key存在不,如果不存在,则 hset resource_str client_str 1 ,然后设置一个过期时间;如果resource_str 存在,则 判断 resource_str client_str 存在不,如果存在,延长过期时间;如果不存在则获取一下 resource_str 的过期时间 time,然后client 进入循环等待time 秒 再重新 执行2 这个过程。
  3. 释放锁的时候,直接将 resource_str key 删除即可

释放锁的时候,直接将 resource_str key 删除即可

注:1. resource_str代表资源key client_str 代表客户端字符串或者是session字符串

​ 2. 上述情况如果 time过长,可以直接返回 超时

3.Redis 分布式锁的改进

4.Redis 分布式锁的改进

  1. 上述的Redis 分布式锁是基于一个 redis hash key 来实现的,这样相当于串行化,并发效果也不好,在 石杉的架构笔记--分布式锁高并发优化 中提到了一种办法,分段加锁。分段加锁相当于是把之前的一个大锁分成n个小锁,每个小锁管固定的一部分资源。当请求进来的时候就先利用3.1所述的Redis分布式锁原理选一个资源锁给当前客户端加上,然后判断商品库存满不满足,如果满足的话直接进行 创建订单、减库存、释放锁;如果不满足的话,直接释放当前的锁,再给客户端选下一个资源锁加上 (这个选资源锁的过程可以有一个随机的算法,但是需要保证尽量不重复)。当所有的资源锁都不满足的话,就只能返回库存不足了。
  2. 缺点:
    1. 实现比较复杂
    2. 如果每次下单的数量从一开始就一直大于 分段后的资源数,这种情况会到导致商品卖不完

注:1. 本文根据自己的理解所写,如有不对的地方请及时反馈。

      2. 如需转载,请注明出处:https://cloud.tencent.com/developer/article/1614808

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-04-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
实测AiPy:你的AI牛马,帮赚钱、帮找对象,通通都能帮
分享AI实践,探讨人与AI如何协作 --〉智能体 | 工作流 | 大模型 | AI赋能。
AIGC新知
2025/06/08
910
实测AiPy:你的AI牛马,帮赚钱、帮找对象,通通都能帮
中国版“Manus”开源?AiPy:用Python重构AI生产力的通用智能体
2025年, AI领域发生了两大事件:一是国产通用AI智能体Manus因“云端异步执行”和“多智能体协作”能力引发热议;二是知道创宇发布的开源框架AiPy,以“Python-Use”范式重新定义AI任务执行逻辑。两者虽定位不同,但均指向AI从“思考”迈向“行动”的技术跃迁。本文聚焦AiPy的技术特性,探讨其如何通过Python生态实现“知行合一”的AI生产力革新。
用户11667410
2025/05/20
1710
中国版“Manus”开源?AiPy:用Python重构AI生产力的通用智能体
中国版 “Manus” 开源?揭秘 Aipy 技术新突破
在人工智能蓬勃发展的当下,全球的目光都聚焦于那些具有变革性的技术突破。Manus 作为一款备受瞩目的通用型 AI 智能体产品,自问世以来便吸引了无数的关注。它以强大的功能,在多个领域展现出了巨大的潜力,让人们看到了 AI 智能体在提升工作效率、解决复杂问题等方面的无限可能。然而,随着技术的不断演进,国产化的 AI 技术力量也在迅速崛起,知道创宇公司推出的 Aipy 技术便是其中的佼佼者,并且其开源的举措更是为开发者生态注入了新的活力。​
用户11668465
2025/05/21
1260
中国版 “Manus” 开源?揭秘 Aipy 技术新突破
还在找“Manus“级工具?AiPy 早就是国内开发者的首选
在 AI 技术蓬勃发展的当下,开发者们始终在寻觅一款强大且高效的工具,来提升开发效率、拓展创新边界。曾引发全球关注的 Manus,以其强大的通用型 AI 智能体功能,在众多开发者心中种下了对理想工具的期待种子。但你或许还不知道,国内开发者如今已有了更优选择 ——AiPy,它早已悄然成为国内开发者的首选,在诸多方面超越了 Manus 所带来的期待。
用户11668465
2025/05/21
1020
还在找“Manus“级工具?AiPy 早就是国内开发者的首选
Python—use:你只管命令,它自己加班
毫无疑问,AI Agent时代已经来临,所谓AI Agent,就是一种不仅会“动脑思考”,还能“动手干活”的AI助手。当前的Agent的技术路线,我习惯性把他们区分为两个阶段或者说技术路径: Agent 1.0 和 Agent 2.0。
com222
2025/05/22
370
Manus:开启AI智能体的新时代
文章摘要:Manus 是由北京蝴蝶效应科技有限公司的 Monica 团队发布的全球首款通用型 AI 智能体产品,于 2025 年 3 月 6 日凌晨问世,引发科技界和资本市场轰动。Manus源自拉丁语 “Mens et Manus”,寓意 “手脑并用”,将大模型逻辑推理转化为实际生产力,区别于传统仅提供建议或简单回答的 AI 助手,能独立思考、规划并执行复杂任务,交付完整成果。其研发基于 AI 行业发展背景,克服多模态交互、多语言支持等技术难题推出,采用多智能体架构,具备独立思考与规划、强大工具调用能力、优异性能表现等技术特点,在办公、金融、教育、医疗等多领域有广泛应用前景,与同类产品如 DeepSeek、ChatGPT 等对比有独特优势,但也都面临着技术可靠性、商业模式可持续性、市场炒作等挑战与争议,未来有望通过技术迭代、商业化拓展、开源与合作等实现更大发展。
正在走向自律
2025/03/08
9762
Manus:开启AI智能体的新时代
Manus是什么?(文末附带价值3w的邀请码申请教程)
Manus 是由 Monica.im 团队开发的一款通用型 AI Agent,被誉为全球首款真正自主的智能代理。它于 2025 年 3 月 5 日正式亮相,目前处于内测阶段,用户需通过邀请码访问其服务。Manus 的名称源自拉丁文“手”(mens et manus,意为“知行合一”),象征其核心理念:不仅停留在思考层面,而是通过实际行动交付完整结果。与传统的 AI 助手(如 ChatGPT)仅提供建议或答案不同,Manus 能够独立思考、规划并执行复杂任务,直接输出高质量的最终成果。
码事漫谈
2025/03/06
9.4K0
Manus是什么?(文末附带价值3w的邀请码申请教程)
最近大火的Manus是什么,本地部署开源版的OpenManus能代替Manus?
Manus 是一款近期在互联网迅速爆火的 AI 智能体(AI Agent)产品,由中国的 Monica.im 团队开发。它被定位为全球首款通用 AI Agent,能够独立完成复杂任务并直接交付完整成果,而不仅仅是提供建议或答案。
星哥玩云
2025/03/13
8170
最近大火的Manus是什么,本地部署开源版的OpenManus能代替Manus?
中国团队发布的通用型 AI Agent 产品 Manus?会成为下一个爆款吗?
2025年3月6日,中国团队Monica.im推出的AI Agent产品Manus引爆科技圈,其以“知行合一”为核心理念,重新定义了人工智能助手的边界。作为全球首款通用型自主智能体,Manus不仅展示了卓越的任务执行能力,更在技术架构、应用场景和用户体验上实现了跨越式创新。本文将从技术突破、应用实践、市场影响及潜在挑战四个维度深度解析这一现象级产品。
Michel_Rolle
2025/03/06
1.3K1
引爆全网!中国90后团队打造的Manus让全球科技圈彻夜难眠
2025年3月6日凌晨,中国团队研发的通用AI Agent产品Manus】横空出世,瞬间点燃全球开发者社群突然刷屏科技圈,24小时内冲上微博热搜榜首。
windealli
2025/03/10
1760
引爆全网!中国90后团队打造的Manus让全球科技圈彻夜难眠
MCP介绍 &使用案例
2025 年是智能体的元年,也注定了是智能体集中爆发的一年。 但是,在AI智能体的世界里,有两个互联领域的重大挑战。
叫我阿杰好了
2025/05/01
1.8K1
MCP介绍 &使用案例
Manus刷屏!全球首款通用型AI智能体发布
Manus是由Monica.im团队开发的全球首款通用型AI智能体(Agent)产品,于2025年3月6日正式发布。
用户7353950
2025/03/07
8090
Manus刷屏!全球首款通用型AI智能体发布
中国智造“Manus”横空出世:邀请码炒到10W?半天就翻车了?
今日科技圈上演 "抢码大战",Manus 内测邀请函引发全民抢购热潮。据不完全统计,二手交易平台已有超 200 个卖家挂售邀请码,报价从 5.8 万元至 10 万元不等,部分稀缺时段码源溢价率高达 300%。有科技博主戏称:"现在邀请码的含金量,堪比当年比特币矿机预售资格。"
@派大星
2025/03/10
1010
中国智造“Manus”横空出世:邀请码炒到10W?半天就翻车了?
Manus爆火背后:通用智能体的数据治理架构革命与隐忧
2025年3月,AI领域掀起了一场关于"智能体"的认知革命。当Manus的演示视频在社交平台刷屏时,人们看到的不仅是AI代理处理简历、分析股票的神奇能力,更预示着一个新时代的来临——人工智能开始突破"对话式交互"的桎梏,向真正的任务执行者进化。这款由Monica团队打造的通用智能体,在48小时内创造了邀请码炒至万元的行业奇观,其背后折射出的不仅是市场对AI生产力的饥渴期待,更是对数据治理体系的全新考验。
白德鑫
2025/03/13
13.9K18
Manus爆火背后:通用智能体的数据治理架构革命与隐忧
Genspark Super Agent,比Manus快速更可靠的通用智能体
就在刚刚,继manus之后,Genspark Super Agent。一个终极的 AI 助手,可以真正自主地思考、计划、行动和使用工具来处理所有日常任务,在AI圈开始火起来。
AIGC新知
2025/04/04
1.6K0
Genspark Super Agent,比Manus快速更可靠的通用智能体
AutoGLM 能操控手机,AI 未来已经来了?
最近,AutoGLM 刷屏了各大社交平台,我随即去看了一下它的介绍视频。这不正是我一直梦寐以求的 AI 智能助手吗?
算法一只狗
2025/03/31
4580
当AiPy遇见Vibe Coding:解锁高效编程的心流状态
"又加班到凌晨三点,屏幕上的代码开始变得模糊,咖啡已经喝了第五杯,但那个该死的bug依然找不到..." 这是不是你的日常?在传统开发环境中,我们花费大量时间在与编译错误搏斗、在文档中搜索API用法、在Stack Overflow上寻找相似问题的解决方案。这些碎片化的任务不断打断我们的思维流,让进入深度工作状态变得异常困难。
用户11668465
2025/05/21
830
【愚公系列】《Manus极简入门》006-全面了解 Manus
在虚拟与现实交织的数字浪潮中,交互技术的每一次革新都如同一颗投入湖面的石子,激起层层创意与想象的涟漪。Manus,这个在动作捕捉与虚拟交互领域熠熠生辉的名字,正以其独特的魅力与卓越的性能,引领着我们踏入一个前所未有的沉浸式体验新纪元。
愚公搬代码
2025/05/28
1170
不是ManusAI用不起,而是AgenticSeek更有性价比,炸裂的项目,100%本地运行的AI秘书,真的丝滑啦!
嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法
小华同学ai
2025/05/30
6500
不是ManusAI用不起,而是AgenticSeek更有性价比,炸裂的项目,100%本地运行的AI秘书,真的丝滑啦!
感谢Manus,一个邀请码卖到了10万
2025年3月6日,一款名为Manus的AI智能体产品横空出世,短短24小时内引发全网狂欢,邀请码被炒至10万元天价。这款由中国团队Monica研发的全球首款通用AI Agent,不仅刷新了行业对“AI助理”的认知,更被评价为“AI Agent的GPT时刻”。它究竟有何魔力?背后又有哪些争议?本文为你深度解析。
javpower
2025/05/30
1280
感谢Manus,一个邀请码卖到了10万
推荐阅读
相关推荐
实测AiPy:你的AI牛马,帮赚钱、帮找对象,通通都能帮
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验