共计 520 个字符,预计需要花费 2 分钟才能阅读完成。
我的项目里有这样一个需要 通过 excel 导入大量数据(结构化数据)
之前的计划是前端抉择 excel 丢给后端读取 而后后端把读取到的数据返回给前端 前端批改完后再提交到后端 最初入库
看着完满 切实一塌糊度 数据量小没的问题 一旦数据量大了下来 各种问题
1、因为要批量批改 所以后端把所有数据都吐给了前端 而后由前端做分页 这就导致了前端的卡顿
2、后端把所有数据都吐给了前端 接口返回值就会很大 申请就会很慢
3、前端批改完把所有数据再提交给后端 同样很慢
优化的计划
后端读取到的数据不再返回给前端 而是存入到 redis 里缓存住 key 为前端提供惟一标识 uuid 这样前端就能够拿着 uuid 来对 redis 里的数据进行增删改查 具体实现细节后续会收回 不过要先提到一点 就是曾经入库的数据会先从数据库里取出 而后存到 redis 里
以上就是实现的细节
一、再有就是导入 excel 可能要校验数据的真实性 要与数据库里数据去对 那么大数据量的话 一条条的去对 因为会频繁的与数据库连贯 性能是极其蹩脚的 这里也顺便做了优化
优化点次要有两个
1、做批量查问 用 in 代替 eq 缩小与数据库的连贯
2、做缓存 查过了就不会再查了 进一步 缩小与数据库的连贯
以上就是实现的细节
因为 java 并不是我的本职 所以代码写的会比拟啰嗦 还请见谅!!!
正文完