1、什么是缓存穿透
缓存穿透是查询一个根本不存在的数据,由于缓存是不命中时需要从数据库查询,这将导致这个不存在的数据每次请求都要到数据库去查询,进而给数据库带来压力。
2、解决方法
方法一:缓存空数据
操作简单,但是可能会提高内存消耗
方法二:布隆过滤器
用途: 用于检索一个元素是否在一个集合中。
优点:
时间复杂度低,增加及查询元素的时间复杂度都是O(k),k为Hash函数的个数;
占用存储空间小,布隆过滤器相对于其他数据结构(如Set、Map)非常节省空间。
缺点:
存在误判,只能证明一个元素一定不存在或者可能存在,返回结果是概率性的,但是可以通过调整参数来降低误判比例;
删除困难,一个元素映射到bit数组上的k个位置为1,删除的时候不能简单的直接置为0,可能会影响到其他元素的判断
理解和解决缓存穿透:布隆过滤器的应用
缓存穿透是指查询不存在的数据导致每次都访问数据库。解决方法包括缓存空数据,但这可能增加内存使用。另一种方法是使用布隆过滤器,它在低空间占用下高效判断元素是否存在,但存在误判可能且删除操作复杂。Java可以实现布隆过滤器来优化这种情况。
1283

被折叠的 条评论
为什么被折叠?



