批量导入如何解决数据重复问题


有个需求,通过excel批量导入商品数据,部分商品信息和会员信息需要调用外部接口

现状

解析excel数据,根据特定四个字段(seller_id ,shop_id,sku_code,member_id)查询数据库是否有该条数据,然后查询外部商品接口,会员接口补全数据,放到list,最后批量插入数据库。

问题来了,第一个excel正在导入,前端也没做提醒,以为没有导成功,又进行上传了一次,那么重复数据就会产生,那该如何处理这种问题?

基于现状优化点:

1、导入的时候发现,商品信息是相同的,只是会员不同,商品和会员又都是从外部接口查的,所以商品和会员都放到redis,先从redis读,减少外部接口调用

2、前端增加loading提示

3、数据多会有超时情况,目前单独对接口设置超时时间没生效,这个要调研下,另外异步化也是可以考虑的一个点。

4、批量导入要分多次,而不是一次全部导入,数据量大的时候就会有问题

考虑导入的设计方案

核心问题:如何控制重复数据的导入? redis方案:

1、使用分布式锁,相同名称的excel,相同用户允许只有一个?

2、使用缓存,导入的时候,每解析一条数据,就把数据放到缓存, seller_id ,shop_id,sku_code,member_id,组合key,导入完成的时候再去批量删除。 当导入的时候判断这些数据缓存里面是否有,如果有说明有正在导入的数据,提示错误不给导入。

微信扫描二维码,关注后回复,获取精华资料!

1、回复「书单」:免费获取百本「豆瓣」高分好书。
2、回复「赚钱」:领取实用的36个赚钱小项目。
3、回复「TED」:送你100场TED最受欢迎的演讲,感受最顶尖的思想。
4、回复「学习」:免费获赠英语7000单词速记法(价值200元,很好用),四六级轻松过;
5、回复「PPT」:送你500套好看又实用的PPT模板,让你的PPT颜值爆表]
6、回复「88」:java精品案例,微服务架构Springboot项目实战

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×