如何来建设网站,网站怎么做悬浮图片,淘宝店铺怎么运营,装饰公司怎么做网站一 缓存预热
1.1 缓存预热
将需要的数据提前缓存到缓存redis中#xff0c;可以在服务启动时候#xff0c;或者在使用前一天完成数据的同步等操作。保证后续能够正常使用。
1.2 缓存穿透
在redis中#xff0c;查询redis缓存数据没有内容#xff0c;接着查询mysql数据库可以在服务启动时候或者在使用前一天完成数据的同步等操作。保证后续能够正常使用。
1.2 缓存穿透
在redis中查询redis缓存数据没有内容接着查询mysql数据库也没有需要的内容做了两次无用的查询。进而造成mysql数据库的负担造成一系列的风险。
解决办法bloomfilter白名单实现过滤。
1.3 白名单的作用
白名单里面有才让允许通过没有的内容则不允许通过。但是存在误判的情况比如bloomfilter中存在查询的内容且允许通过但是并不是我们真正需要的那个内容。 1.4 白名单入门案例
public class WhiteList {public static void main(String[] args) {testGuavaWithBloomFilter();}public static void testGuavaWithBloomFilter(){//1 创建guava版布隆过滤器BloomFilterInteger bloomFilter BloomFilter.create(Funnels.integerFunnel(), 100);//2 判断指定的元素是否存在System.out.println(bloomFilter.mightContain(1));System.out.println(bloomFilter.mightContain(2));System.out.println();//3 讲元素新增进入bloomfilterbloomFilter.put(1);bloomFilter.put(2);System.out.println(bloomFilter.mightContain(1));System.out.println(bloomFilter.mightContain(2));}
}
结果 1.5 白名单过滤器的实现案例
逻辑 guava布隆过滤器插入100万样本数据并额外10W测试是否存在这10w的数据在100w的数据可能存在相同的情况存储到相同位置。比如规则为m%3则 1,4,7放到同一个位置槽中。 1.5.1 代码逻辑
1.controller
RestController
Slf4j
public class GuvaFilter {Resourceprivate GuavaBloomFilterService guavaBloomFilterService;ApiOperation(guava布隆过滤器插入100万样本数据并额外10W测试是否存在)RequestMapping(value /guavafilter,method RequestMethod.GET)public void guavaBloomFilter(){guavaBloomFilterService.guavaBloomFilter();}
}
2.service
Service
Slf4j
public class GuavaBloomFilterService
{//1 定义一个常量public static final int _1W 10000;//2 定义我们guava布隆过滤器初始容量public static final int SIZE 100 * _1W;//3 误判率它越小误判的个数也就越少(思考是否可以是无限小没有误判岂不是更好)public static double fpp 0.01;//0.01 0.000000000000001//4 创建guava布隆过滤器private static BloomFilterInteger bloomFilter BloomFilter.create(Funnels.integerFunnel(), SIZE,fpp);public void guavaBloomFilter(){//1 先让bloomFilter加入100W白名单数据for (int i 1; i SIZE ; i) {bloomFilter.put(i);}//2 故意取10W个不在合法范围内的数据,来进行误判率的演示ArrayListInteger list new ArrayList(10 * _1W);//3 验证for (int i SIZE1; i SIZE(10 * _1W) ; i){if(bloomFilter.mightContain(i)){log.info(被误判了:{},i);list.add(i);}}log.info(误判总数量:{},list.size());}
}
3.截图 控制台打印日志 1.7 bloomfilter总结
bloomfilter作用查询的内容A一定不存在在过滤器中查询肯定没有如果存在但是存在误判的情况但是误判率很小可以忽略。 1.7 黑名单的使用
黑名单在黑名单的存在的内容就不再推荐不存在则推荐。
应用案例 抖音等媒体的推荐内容。