使用lua+redis解决发多张券的并发问题
前言公司有一个发券的接口有并发安全问题,下面列出这个问题和解决这个问题的方式。业务描述这个接口的作用是给会员发多张券码。涉及到4张主体,分别是:用户,券,券码,用户领取记录。改造过程因为券码是多张,想用lua+redis的list结构去做弹出。为什么用这种方案是因为for update直接被否了。这是写的lua脚本。。其实主要的解决方法就是在redis的list里rpush(存),lpop(取)取数据当然这种操作需要去提前把所有券的券码丢到redis里去,这里我们也碰到了一些问题。比如开始直接粗暴的用@PostConstruct去放入redis,导致项目启动需要很久很久。。这里就不展开了,说一下我们尝试的几种方法