对提交的数据校验是否重复,db 在不加索引的情况下,大数据量查询很慢。
将数据都缓存到 redis 中,如果直接用 set 、hash 这种结构,基于 member/field 校验重复值,需要缓存原数据,浪费空间,而且 redis key 、set member 有上限。
有没有其他的,类似布隆过滤器这种基于 hash 运算,节省空间的方法。(布隆不支持删除,不考虑)
bitmap 需要做数据-offset 映射,而且 bitmap 没有压缩,如果 offset 映射出来是 2^32-1 ,直接就干满 512MB 了。
![]() | 1 MoYi123 2022-03-08 10:38:39 +08:00 roaringbitmap |
![]() | 3 edward1987 2022-03-08 11:01:28 +08:00 原数据是字符串的话,有长度和编码吗? 如果都不固定,那就只能存原数据了吧。hash 会有碰撞的可能,不满足你的业务需求 |
![]() | 4 blu10ph 2022-03-08 11:14:22 +08:00 HyperLog |
![]() | 5 Maboroshii 2022-03-08 11:16:46 +08:00 via Android md5 哈希,存数据库加索引 |
![]() | 6 corningsun 2022-03-08 11:36:59 +08:00 |
![]() | 7 labulaka521 2022-03-08 11:59:14 +08:00 为什么不加个哈希索引呢?前几天看个帖子百亿数据百毫秒查出 |
8 leebs OP @labulaka521 mongodb 文档型结构,字段名不是固定的。 |
9 ffxrqyzby 2022-03-08 13:45:29 +08:00 https://github.com/aviggiano/redis-roaring redis 可以用这个, 亲测压缩效果不错 另外看你们业务场景, 大数据离线可以用一些好用的 olad, 基本天生支持 HLL, bitmap, 毫秒级去重 |
10 ffxrqyzby 2022-03-08 13:45:53 +08:00 olad -> olap |
![]() | 12 lbp0200 2022-03-08 14:51:34 +08:00 复合主键 HBASE tendis |
13 swcat 2022-03-09 08:55:16 +08:00 我是这样做的, (crc32 + hash 取 n 个字符) + 字符串全校验 |