布隆过滤器原理
布隆过滤器本质是一个很长的二进制数组,通过一系列的hahs函数来确定该数据是否存在,hash数组的长度越大且hash次数越多重复的可能性就越小。
布隆过滤器提示不存在的值一定不存在,提示存在的值可能存在
一、php使用布隆过滤器解决redis缓存穿透问题
1、composer require pleonasm/bloom-filter
use Predis\Client as Predisclient; use Pleo\BloomFilter\BloomFilter;
二、初始化布隆过滤器
$server = array( 'host' => '127.0.0.1', 'port' => 6379, 'password' => 123456, ); $redis = new Predisclient($server); // 设定大约的元素数量和误判率 $approximateItemCount = 100000; $falsePositiveProbability = 0.001; $before = memory_get_usage(); $bf = BloomFilter::init($approximateItemCount, $falsePositiveProbability); $after &