乐观锁、悲观锁及memcached实现方案
来源:互联网 发布:中电数据服务 编辑:程序博客网 时间:2024/06/08 13:56
乐观锁与悲观锁
乐观锁与悲观锁的定义不再赘述,简单说一下我的理解。
乐观锁
假定不会出现并发问题,只有更新数据时才检查数据是否被锁定。
悲观锁
假定会出现并发问题,读取数据时即将数据锁定。
memcached实现
乐观锁
先假定一个场景:商品抢购。有N件商品,商品剩余数量存在memcached里,一个抢购的请求过来,商品剩余数量需减1,直到0。
- 读取商品剩余数量,并获取token,如果剩余数量为0,则退出
- 商品剩余数量减1
- 检查token并更新商品剩余数量
- 如果[3]失败,回到[1]
以上方案保证在高并发的场景下,同一时刻只有一个客户端可以抢购成功。
悲观锁
场景:审批流表单提交,两个客户端同时提交表单,欲将审批流从A状态更新到B状态。
- 检查待审批数据是否被锁定,是则退出
- 读取待审批数据,并在memcached中设置锁定标志
- 更新审批数据
- 删除锁定标志
以上方案可以保证同一时间,只有一个客户端能够更改审批流状态。
0 0
- 乐观锁、悲观锁及memcached实现方案
- 悲观锁及乐观锁的引用
- 以memcached为例理解乐观锁与悲观锁
- 悲观锁和乐观锁的实现
- mysql 乐观锁和悲观锁实现
- 乐观锁与悲观锁的实现
- 悲观锁乐观锁
- 乐观锁,悲观锁
- 悲观锁 乐观锁
- 乐观锁 悲观锁
- 悲观锁-乐观锁
- 乐观锁 悲观锁
- 悲观锁,乐观锁
- 悲观锁乐观锁
- 乐观锁 悲观锁
- 悲观锁 乐观锁
- 悲观锁 乐观锁
- 悲观锁乐观锁
- 二分查找
- reason: '[<__NSDictionary0 0x7fda88f00c90> setValue:forUndefinedKey:]: this class is not key value c
- python学习
- 【手记】记录接触到的游戏里比较好的点
- textArea 换行怎么保存到数据库
- 乐观锁、悲观锁及memcached实现方案
- Java并发编程:深入剖析ThreadLocal
- poj--3164(次小生成树)
- plsql自治事务在异常中的使用
- symfony
- UIScrollView控件介绍
- 欢迎使用CSDN-markdown编辑器
- leetcode 233. Number of Digit One
- android应用框架理解