simhash 算法简单又高效.
但是问题来了,如何对亿级 hash 进行存储,同时达到高效 查找的目的
目前的做法:
将 64bit 的 hash 分为 8 片, 然后分别以每片的值做 key,其余所有作为 set 的 value 存储在 redis 中,
每次新来一个 hash 就将其分片,去 redis 查 8 次,然后遍历所有 再进行抑或得到海明距离小于 2 的结果.
这样下来 每次查询都需要 100ms 左右, 请问有更好的方式么?
simhash 算法简单又高效.
但是问题来了,如何对亿级 hash 进行存储,同时达到高效 查找的目的
目前的做法:
将 64bit 的 hash 分为 8 片, 然后分别以每片的值做 key,其余所有作为 set 的 value 存储在 redis 中,
每次新来一个 hash 就将其分片,去 redis 查 8 次,然后遍历所有 再进行抑或得到海明距离小于 2 的结果.
这样下来 每次查询都需要 100ms 左右, 请问有更好的方式么?
|
solosMar 23, 2017
1
可以分表吧
|
|
paradoxsMar 23, 2017 via iPhone
2
hadoop
|
|
xiusedelangMar 23, 2017 via Android
3
这个查询技巧在谷歌的论文里也给出来了吧
|
|
mooncakejsMar 23, 2017 via iPhone
4
用 8 个 redis
|
|
wzha2008Mar 24, 2017
5
|
|
7
|