怎么保证接口的幂等性呢?
接口幂等的意思是一次和多次请求某一个资源对于资源本身应该具有相同的结果,这在表单提交、订单创建等场景均有应用。
防止重复数据的话,我们可以在insert前先select
,但是这个方案不适用于并发场景;
为了防止重复数据的产生,我们还可以再表中添加唯一索引
,这种方法简单有效。
不方便在表中加唯一索引的话,还可以通过建防重表
来解决问题,表中只包含两个字段,id和唯一索引(唯一索引可以是多个字段组合起来的唯一标识)
加乐观锁
or 悲观锁
也是一个可行方案
我们还可以通过redis的setnx命令
实现分布式锁,用户通过浏览器发起请求时生成订单号xxx作为唯一业务字段,结合set xxx 1 ex 10 nx。如果set成功,就进行数据操作;set失败代表重复请求,直接返回成功。
重生之八股仙帝 文章被收录于专栏
曾有一千古奇人,精修八股文,成遁世之高人,彻天彻地畅游天地间。 今人皆忙忙,急于求成,岂不知八股乃道门口径,背负天人,若经熟读背诵,更能开拓智慧之门,探寻未来之路。 天下繁华,不尽长夜,唯有读书为伴,熟读八股文更是攀登高峰之路。磨砺文字,升腾智慧,唯有勤玉立志,始可破天荒,登临九重不竭之巅! 吾辈修炼之路,虽曲折荆棘,但信念不曾磨灭,唯有铭记八股精髓,方能指引灵魂归宿,成就一生辉煌!