Kratos中使用gin处理excel文件上传与下载并批量往数据库与redis中写入数据

功能概述

在kratos框架中使用gin处理http请求,实现上传固定内容格式的excel文件并将excel中的数据存入MySQL数据库与Redis中。

项目地址

https://gitee.com/huoyingwhw/kratos-gin

使用postman测试文件上传注意

1、设置Content-Type,boundary参数见下面参考文章中的介绍:

2、body中使用form-data上传文件,并且key用“file”,因为项目中使用的方法用“file”这个key获取文件的:

批量写入数据库时注意控制下一次写入的数量 ***

网上有一篇文章探讨了MySQL数据库一次批量插入数据量的问题:https://zhuanlan.zhihu.com/p/514985459

data层关键的批量写入数据库与使用pipeline分批次写入redis的说明:

这里设置的BatchCreateUserSize是,如果列表中有5个用户的话,每次只会写入2条数据,直到写完为止:

~~~

文件上传记得做限制以及处理数据注意

1、上传文件大小限制 限制一次性上传文件的数量 很有必要 之前做项目时 上传投放广告的素材 一次传太多 太的的素材 导致另外一个问题排查 沟通后发现原来是这么回事。  开发的时候注意一下 减少不必要的麻烦

2、数据处理注意:

❗️我们的项目是给产品用的,程序员不能控制产品人员的操作!所以在开发前就要想到使用者可能有哪些厉害的/毁灭性的操作~
(1)数据库数据批量写入的时候限制每次create的数量
(2)如果可能的话,让前端限制一下上传文件的大小~或者后端也可以做一下这个限制~~
(3)使用pipeline一次写入redis的数量也不要过多
(4)使用 on conflict 语句,如果有产品重复上传相同的数据(比如例子中的name与age的组合重复了),这样不会创建新的记录!但是有一个点需要注意,如果表中有软删除的标志比如字段叫is_delete(1表示未删除,2表示已删除),如果一条数据被删了id_delete的标志是2,创建的时候要加上is_delete做重复判断了(name+age+is_delete)!而且没有特殊需求的话,建立联合唯一索引的时候要谨慎!

参考资料

kratos中使用gin

postman请求文件上传遇到的问题

【http/https】Content-Type的boundary

robotframework调用上传文件接口报错“the request was rejected because no multipart boundary was found”

~~~

posted on 2023-05-16 19:36  江湖乄夜雨  阅读(748)  评论(0编辑  收藏  举报