递归火山软件开发平台

标题: 请问这个去重循环有没有优化空间或者更好的写法 [打印本页]

作者: a2521298    时间: 2021-7-14 17:54
标题: 请问这个去重循环有没有优化空间或者更好的写法
(, 下载次数: 55)

上面是JSON解析出来的数据,循环解析单次50条数据大概要花3秒,可以接受,到这边redis入库去重,去重的时候执行完毕大约11-13秒,有点难搞,大佬们有没有好的方法?

作者: mxa1022    时间: 2021-7-14 19:15
枚举循环要好一点
作者: 小蜗牛    时间: 2021-7-14 19:44
去重可以用哈希表呀
作者: a2521298    时间: 2021-7-14 20:15
小蜗牛 发表于 2021-7-14 19:44
去重可以用哈希表呀

我需要入库  多终端使用
作者: b0y    时间: 2021-7-14 21:36
换个方法去重.
作者: 0晨鹤0    时间: 2021-7-14 22:45
没太看懂你的具体需求。

redis 的 set 集合本来就是唯一的 不需要去重呀。直接 SADD my {value} 就行了。、
比如执行 SADD my test1;  SADD my test2; SADD my test1。
最后 my 集合只有两个元素:test1 和 test2,不会出现两个 test1 的。

作者: a2521298    时间: 2021-7-15 08:22
0晨鹤0 发表于 2021-7-14 22:45
没太看懂你的具体需求。

redis 的 set 集合本来就是唯一的 不需要去重呀。直接 SADD my {value} 就行了。 ...

我是上头出新数据  然后调用这个方法来对比数据库里面的去重, 需要单条单条对比,虽然是在线程里面,但是还是太慢了
作者: 0晨鹤0    时间: 2021-7-15 09:37
a2521298 发表于 2021-7-15 08:22
我是上头出新数据  然后调用这个方法来对比数据库里面的去重, 需要单条单条对比,虽然是在线程里面,但 ...

还是不懂。但是可以给你一个方案,数据库查出后转成set,不要用列表。然后通过判断set中是否含有某元素就行了。也就是楼上说的哈希表。

作者: weilai    时间: 2021-7-15 09:54
我也看不懂,取出数据库数据一条一条对比有什么意义?虽然我没有用过redis数据库,但是数据库的优势不就是cha询快吗?直接cha询数据库没有重复的添加,有的不管不就行了,为何还要取出来一条条对比,意义何在?
作者: 67564226    时间: 2021-7-15 10:10
数据库不都有查重, 去重,删重功能吗?  MYSQL,MS ACC 我用得比较多,都有这个功能的。
作者: a2521298    时间: 2021-7-15 10:45
确实我思路错了,REDIS可以直接cha询是否重复。。。 根本没必要一条一条来




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4