登录接口有个黑名单大概有 2 亿左右,每天都去查这个用户是否在黑名单内,有没有高效的方式?

提问者:帅平 问题分类:面试刷题
登录接口有个黑名单大概有 2 亿左右,每天都去查这个用户是否在黑名单内,有没有高效的方式?
3 个回答
空瓶在漂流
空瓶在漂流
使用分布式哈希表(DHT)方案:
将黑名单分片存储到多个节点,通过一致性哈希算法快速定位用户 ID 所属的节点。
优点:支持大规模数据。
缺点:实现复杂。
发布于:22小时前 IP属地:四川省
天然纯勋勋
天然纯勋勋
使用redis集合方案:
使用 SET 或 ZSET 存储黑名单用户 ID。
查询时通过 SISMEMBER 快速判断是否存在。
优点:支持精确查询和动态更新。
缺点:内存占用较高。
发布于:22小时前 IP属地:四川省
我就这样
我就这样
使用布隆过滤器方案:
使用多个哈希函数将用户 ID 映射到布隆过滤器的位数组中。
查询时,如果所有哈希位都为 1,则认为用户可能在黑名单中(存在误判)。
优点:内存占用小,查询速度快。
缺点:存在误判率,无法删除元素。
发布于:22小时前 IP属地:四川省
我来回答