日期:
来源:程序汪汪收集编辑:并发
缓存锁qi前集回顾
前面两篇文章我分别讲了数据库中的for update悲观锁还有乐观锁,都是基于项目实践来讲的,理论扯的比较少。连最常见的并发锁机制不清楚的请看本人另外的锁文章。背景
普通基于mysql或oracle的锁,在一般高并发当然够用了,一般内部管理系统建议用这些锁机制。但如果是像秒杀这种成千上万人一起并发时,原来的方案肯定是扛不住的。成千上万的请求同时落在mysql上,不卡死才怪。业务场景
话说,现在也就阿里电商有这么庞大的并发量,还有12306,每年高并发抢票那叫一个酸爽啊。解决思路缓存中间件,如流行的Redis分布式锁,tair缓存锁,主要讲Redis的锁redis锁命令SETNX锁的思路是,如果 key 不存在,将 key 设置为 value 如果 key 已存在,则 SETNX 不做任何动作
伪代码走起原理Redis为单进程单线程模式,采用队列模式将并发访问变成串行访问,且多客户端对Redis的连接并不存在竞争关系。其次Redis提供一些命令SETNX,GETSET,可以方便实现分布式锁机制。下集预告
数据库的悲观锁和乐观锁 ,缓存锁都讲完了,项目里有实战需要的同学可以参考我的思路进行code
下篇文章我来讲下最原始的锁synchronized,单机高并发情况下程序还是要靠他来锁数据。
如果觉得对你有帮助请关注,有错误请指点,下篇继续分析 【原始的锁synchronized】