redis布隆过滤器实测
业务场景描述
有一批定向用户,要求活动只有这部分用户可以看到和参与,其他用户看不到,也无法完成。
量级
100万定向,200万总量
技术方案一:
使用布隆过滤器,提前初始化
每个用户查询活动时,利用布隆过滤器判断是否需要给他展示
技术方案二:
使用redis的set
每个用户查询活动时,利用set.contains判断
经过实测
方案一:
遍历单条插入:
布隆过滤器,初始化数据时消耗redis大量cpu,百万级要几个小时。
查询很快。
批量插入:由于redisson框架没有提供批量插入布隆过滤器数据的api,未测试。
方案二
遍历单条插入:
set,初始化只要几分钟。
查询很快。
批量插入:
100万一把调用set的addAll,调用失败。
1000个一批,调用成功,且只要几秒。
结论
在百万级数据,且一次性初始化时,redis的set比布隆过滤器优势明显。
布隆过滤器适用的场景,应该是更大数据量级,且最好插入操作是平缓的。
有疑问加w,dreamingmymoon