最近公司因为我这边调用注册登录接口(注册登录是同一个接口) 一秒内掉了2次 结果 给用户注册的2次 出现了2个uid 技术甩锅过来个人忽然想了一些 针对这种情况的一点优化方案
1 直接把手机号 字段设置成唯一键 (不现实 ,数据有一个用户手机号绑定过其他好几个微信的历史数据)
2 请求进入redis 的注册 集合 判定用户是否注册过
有2中情况 1集合有返回 直接判定为登录 从redis hash或者get 拿出数据返回接口
2集合中没有此手机号 则又有2种情况
1用户确实未注册过 --->直接走注册的流程 注册完毕 -> 用户信息set 或者 hash 手机号扔进去集合 做判定 2 用户正在注册过程中,但是最终还没执行完毕 -> 查询redis hash 有则返回 ,无则查询mysql ->如果还没有,则wait程序执行(一般压测给出程序执行的时间),等待时间略微大于 执行时间