这里是用redis的list集合开发,redis的list集合是具有原子性的,不必担心多线程时会取到重复的数据,即使请求同时到达也会排队进行数据操作
1. 先说说大概思路,关于数据库库存字段的设计.数据类型设置为非负数的unsigned, 如果秒杀的商品数量为50个. 秒杀开始前在redis里面建一个类型为list,键名为goods_num_商品id 的键,存入50个元素.元素值可随意取.
2. 建一个键名为user_id_商品id 的键,每次用户秒杀成功,把用户id存入里面,用来判断是否成功秒杀过.如果成功秒杀过则直接返回提示. 下面贴代码
这里的库存表的增减,可以不写,到秒杀活动结束后再进行数据操作.这只是简单的模拟,真实的业务场景可能会更加的复杂.