有个需求,通过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项目实战