最近在进行压力测试的时候发现在高并发下,有些接口很可能因为重复请求导致对数据库操作出来的数据不是你想要的那个样子。比如,用户签到,你只想让用户一天签到一次,为了防止签到多次,你对于每次强求,都去查询数据库今天是不是已经签到了,如果签了,就不让继续签到,如果没签到,插入签到数据,更新积分数据什么的。但是数据库操作是有时间的,在高并发下这种方式明显是不能限制重复请求提交的,有可能一个用户一天签到好几次,只要这个提交时间在很短的范围内就行(亲测确实是这样的)。
于是就引出了今天要讨论的问题,如何处理重复提交的问题。
首先看看准确的出现重复请求问题的原因(容老夫ctrl+v一段文字):
高并发场景下Redis缓存策略防止重复请求

在高并发测试中发现,接口因重复请求导致数据库数据异常,例如用户可能一天签到多次。为解决此问题,文章探讨了如何利用Redis缓存来避免这种重复提交。通过在请求前检查Redis中是否已存在相关标志,可以有效防止在短时间内同一操作的多次执行,从而保护数据库免受不必要的操作。
最低0.47元/天 解锁文章
632

被折叠的 条评论
为什么被折叠?



