防并发措施
2016-04-15 17:27
204 查看
并发类型:
1.玩家A拥有一次领取道具类型,A同时发送100个领取道具的请求,结果收到多个道具
2.玩家B,C,D...Z多个玩家,都有资格领取到某限量(n个)道具,且各自发送请求,最终多于n个人领取了道具
解决办法:
1.联合主键
把玩家账号和次数作为联合主键,其中次数列为当前用户第几次操作。在操作前先插入用户账号和当前的操作次数,利用mysql唯一主键特点,并发的插入最多只有一条能插入成功
2.借助于update + where
update 剩余次数 = 剩余次数-1 where 账号=*** and 剩余次数>0
3.设置操作成功时间限制,玩家一秒钟之内最多有一次操作成功
1.玩家A拥有一次领取道具类型,A同时发送100个领取道具的请求,结果收到多个道具
2.玩家B,C,D...Z多个玩家,都有资格领取到某限量(n个)道具,且各自发送请求,最终多于n个人领取了道具
解决办法:
1.联合主键
把玩家账号和次数作为联合主键,其中次数列为当前用户第几次操作。在操作前先插入用户账号和当前的操作次数,利用mysql唯一主键特点,并发的插入最多只有一条能插入成功
2.借助于update + where
update 剩余次数 = 剩余次数-1 where 账号=*** and 剩余次数>0
3.设置操作成功时间限制,玩家一秒钟之内最多有一次操作成功
相关文章推荐
- Linux
- Win7 环境下PyCharm 安装 注册 配置
- Android服务——Service
- Android服务——Service
- 蓝桥杯 第七届省赛试题 抽签
- 蓝桥杯 第七届省赛试题 分小组
- CSS选择器的权重与优先规则
- hadoop学习笔记(1)
- 你需要知道的三个CSS技巧
- CSS中的float属性
- 数据库的隔离级别
- YUV格式&像素
- json字符串到js对象的转换
- JTable适配(AbstractTableModel)
- Oracle字符集的查看查询和Oracle字符集的设置修改(续)
- JS判断是否在微信浏览器打开
- Lambda表达式初体验·
- 第四次职业生涯规划作业
- 蓝桥杯 第七届省赛试题 凑算式
- Java学习路线