接口是并发的处理多个请求,现在有一个check-then-act类型的接口,先根据所传的参数检查数据是否已录入,不存在则添加。
该操作分为3个步骤:
- 1-检查数据是否已存在
- 2-业务处理
- 3-入库
如果多个线程并发调用该接口(相同参数),就会出现重复数据。
如何避免这种情况又不影响接口处理效率?
接口是并发的处理多个请求,现在有一个check-then-act类型的接口,先根据所传的参数检查数据是否已录入,不存在则添加。
该操作分为3个步骤:
如果多个线程并发调用该接口(相同参数),就会出现重复数据。
如何避免这种情况又不影响接口处理效率?
首先这是接口幂等性,不是原子性。
处理方式 简单业务就是数据库上唯一索引,入库的数据幂等,不出现重复数据。
其次接口幂等,需要通过接口入参,用户信息等做唯一标识处理 比如进行MD5,可以通过AOP
不懂可以问我