高并发下如何保证数据的一致性
2019独角兽企业重金招聘Python工程师标准>>>
1.通过悲观锁实现 for update
2.通过乐观锁实现,加字段
3.针对秒杀系统,可以采取将并发请求串行化。放在一个队列中,处理对数据库的写操作
4.通过redis实现,读和写都操作redis。写redis数据时,同时产生一条业务相关联的日志数据。单独开个任务或者消息队列来对日志数据进行读取,获取里面的对数据库的操作。然后进行写数据库。
5.因为redis支持事务,所有写操作可以通过lua脚本来支持对数据库的操作。
6.写update语句时,还可以这样写。update produce p set p.num=$SumNum-$num where p.num=$sumNum and $sumNum-$num>0;
更新某个库存值时,首先获取当前库存量。更新时传入查询到的数量。减出此次要操作的数量。加上两个限制条件:
1.查询到的数量和数据库里面的库存数量一致
2.此次操作后,库存数量大于0。
第四条:使用乐观锁,虽然可以做到一致性。但是在高并发情况下,会产生大量的失败请求。会产生大量的数据库Io操作。为了减少io,可以将其放在redis中,进行操作。然后产生业务日志,根据业务日志对数据库进行更新。
另:redis支持事务,支持set,一般只用来做缓存。这里备注下,都忘了有这些功能了。
转载于:https://my.oschina.net/begin01running/blog/1536095
高并发下如何保证数据的一致性相关推荐
- 高并发下如何保证接口的幂等性?
前言 接口幂等性问题,对于开发人员来说,是一个跟语言无关的公共问题.本文分享了一些解决这类问题非常实用的办法,绝大部分内容我在项目中实践过的,给有需要的小伙伴一个参考. 不知道你有没有遇到过这些场景: ...
- HDFS的特性以及如何保证数据的一致性
链接:https://www.nowcoder.com/questionTerminal/962225fa78e74ba7b1d7d7792407acc6?orderByHotValue=1& ...
- Flink如何保证数据的一致性
当在分布式系统中引入状态时,自然也引入了一致性问题.一致性实际上是"正确性级别"的另一种说法,也就是说在成功处理故障并恢复之后得到的结果,与没有发生任何故障时得到的结果相比,前者到 ...
- 高并发下如何保证缓存和数据库的数据一致性?
51CTO 缓存由于其高性能,支持高并发的特性,在高并发的项目中不可或缺.被大家广泛使用的有Redis,Memcached等.本文主要探讨几种常见的缓存的读写模式,以及如何来保证缓存和数据库的数据一致 ...
- 高并发下如何保证接口的幂等性
前言 接口幂等性问题,对于开发人员来说,是一个跟语言无关的公共问题.本文分享了一些 ,绝大部分内容我在项目中实践过的,给有需要的小伙伴一个参考. 不知道你有没有遇到过这些场景: 有时我们在填写某些 f ...
- ElasticSearch 集群是如何保证数据的一致性和实时性?
1. 当我们在说一致性,我们在说什么? 在分布式环境下,一致性指的是多个数据副本是否能保持一致的特性. 在一致性的条件下,系统在执行数据更新操作之后能够从一致性状态转移到另一个一致性状态. 对系统的一 ...
- 如何保证数据最终一致性(分布式事务)
分布式事务种类 按照实现原理分主要有三类:传统事务型.事件通知型.补偿型. 传统事务型(不适用高并发场景,锁定资源较多): 两阶段提交(2PC) 三阶段提交(3PC) 事件通知型: 可靠消息实现模式 ...
- c# mysql代码中写事务_代码中添加事务控制 VS(数据库存储过程+事务) 保证数据的完整性与一致性...
[c#]代码库代码中使用事务前提:务必保证一个功能(或用例)在同一个打开的数据连接上,放到同一个事务里面操作. 首先是在D层添加一个类为了保存当前操作的这一个连接放到一个事务中执行,并事务执行打开同一 ...
- ServiceComb中的数据最终一致性方案
本文由华为微服务引擎技术团队&&ServiceComb社区授权发布. 数据一致性是构建业务系统需要考虑的重要问题 , 以往我们是依靠数据库来保证数据的一致性.但是在微服务架构以及分布式 ...
最新文章
- arcgis 中label feature太长换行_MapGIS转换为ArcGIS小结
- 让改变输入法回车键的图标
- link函数 matlab,安装Excel link插件,实现Excel与Matlab的互联
- 几种常见软件过程模型的比较
- 事后分析报告(M2阶段)
- 使用 jom 代替 nmake
- Linux系统查看内存使用情况
- 威纶通触摸屏制作自定义欢迎界面的几种方法介绍
- 多级父子关系数据库设计
- 启明云端分享|IDO-SOM3828模块,你值得拥有。
- face_recognition库的安装以及学习
- android 锁屏代码分析,Android锁屏状态下的安全分析
- python 学习(八—1) 项目:生成随机的测试试卷文件
- 教师资格证面试缴费找不到服务器,2016年教师资格证考试报名网上缴费常见问题...
- SPICE模型入门到精通
- 硬件设计分享-⑨电感与磁珠
- win10开机的微软服务器,部分 Win10 Edge 浏览器开机自动启动,微软确认是 bug
- Linux基础复习总结
- 这50款必看医疗APP 或许就是下一个风口 (上)
- 蠕虫病毒的查杀 (转)
热门文章
- R7-12 h0008.卡片延伸长度 (15 分)
- 7-290 鸡兔同笼 (10 分)
- html5前端实习招聘面试,2018头条春招前端实习生面试题目总结
- 4004-基于邻接矩阵的新顶点的增加(C++,附思路)
- “send“ and “transfer“ are only available for objects of type “address payable“, not “address
- hwpfdocument 获取第一页内容_有人专注搞这3个引流渠道,精准流量获取从此变得简单...
- MTK(android init.rc) 写一个开机启动的服务
- UITextView 和 UITextField限制字符数和表情符号
- SQL SERVER 2000 创建挂起的文件操作 解决方法
- ASP.NET中对STA COM组件的不正确调用产生的w3wp远程DoS