布隆过滤器在Google Guava 18版本以上的jar包有现成的集成,能够用于缓解缓存穿透数组
由于存在0.03%的误判率,因此适用于可以容忍必定的缓存穿透的场景~~缓存
其原理是基于:多个哈希函数和二进制向量数据结构 服务器
如图若果数据通过两个哈希函数同时命中(二进制数组中为1的为命中,如图 一、b),则为数据在布隆过滤器中存在~~数据结构
使用步骤:多线程
1:首先把须要缓存过滤的数据load到布隆过滤器之中(数据量过大的话,建议多线程去load)函数
2:部署单独一台的布隆过滤器的服务器编码
3:编码层在进入缓存或者DB判断以前,提早使用布隆过滤器判断是否存在,若是存在:则去缓存或则DB中去取数据;若是不存在,则直接返回(由于布隆过滤器存在必定的误判率,因此若是布隆过滤器判断不存在,也有可能会走到缓存或则DB当中去)线程