redis布隆过滤器实测

业务场景描述

有一批定向用户,要求活动只有这部分用户可以看到和参与,其他用户看不到,也无法完成。

量级

100万定向,200万总量

技术方案一:

使用布隆过滤器,提前初始化

每个用户查询活动时,利用布隆过滤器判断是否需要给他展示

 

技术方案二:

使用redis的set

每个用户查询活动时,利用set.contains判断

 

经过实测

方案一:

遍历单条插入:

布隆过滤器,初始化数据时消耗redis大量cpu,百万级要几个小时。

查询很快。

批量插入:由于redisson框架没有提供批量插入布隆过滤器数据的api,未测试。

方案二

遍历单条插入:

set,初始化只要几分钟。

查询很快。

批量插入:

100万一把调用set的addAll,调用失败。

1000个一批,调用成功,且只要几秒。

 

结论

在百万级数据,且一次性初始化时,redis的set比布隆过滤器优势明显。

 

布隆过滤器适用的场景,应该是更大数据量级,且最好插入操作是平缓的。

 

posted @ 2022-01-26 17:41  然然1907  阅读(302)  评论(0编辑  收藏  举报