那天晚上,越黑风高,我的好朋友跟我说面试官问了他这么一个问题:
现在有一千万个IP,你要怎么查询一个IP是否存在?

二话不说,map-reduce,是没错的。因为他没说这种操作要持续多少次啊,这一千万个IP要不要做持久化啊。

那现在问题加码一下,要频繁查询。


这个场景似曾相识是不是,有没有。
在redis缓存击穿的时候,遇到恶意攻击怎么办?布隆过滤器:判断一个数据存在,数据可能存在。判断一个数据不存在,那肯定不存在。


但是我们现在是要判断绝对存在或不存在。这可咋整?

数据结构(12)-- 前缀树(字典树、Trie)

我们来算一下啊,一个 ip 12 个字节(三个点就算了吧),我要是愿意,我还能给它压缩成一个 ip 3个字节,那就是三千万个字节,3万K,也即是30M不到,28.61M。

在碰撞中再压缩一些,就更小了。还是存得起的。

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐