第一种 简单的解决方法针对这个情况,我们有一种简单的解决方法就是,在数据库没有查询该条数据的时候,我们让该key缓存一个 空数据,这样用户再次以该key请求后台的时候,会直接返回null,避免了再次请求数据库,我来为大家科普一下关于redis缓存穿透出现原因及解决方案?下面希望有你要的答案,我们一起来看看吧!
redis缓存穿透出现原因及解决方案
第一种 简单的解决方法
针对这个情况,我们有一种简单的解决方法就是,在数据库没有查询该条数据的时候,我们让该key缓存一个 空数据,这样用户再次以该key请求后台的时候,会直接返回null,避免了再次请求数据库。
第二种 布隆过滤器
1)将数据库所有的数据加载到布隆过滤器
2)查布隆过滤器(如果未命中直接结束)
3)查Redis缓存数据(如果未命中走3再到4 )
4)查询数据库
1 使用布隆过滤器处理 90%以上恶意请求.
(布隆过滤器会有一定概率误判,但访问一个数据如果布隆过滤器判断不存在,说明数据一定不存在,就不会请求数据库了,能够有效避免大量无效请求来访问数据库)
2 访问redis缓存.
3 SoftHashMap 内存再次优化处理(软应用会在内存不够时才GC回收利用).
4 均没有才访问db, redis缓存以及SoftHashMap .
,