1)缓存击穿
客户端恶意的访问一个不存在的数据,从而穿透缓存,请求到达数据库,频繁的发送这类请求,直接查询数据库,增加数据库的压力.
解决:
1.在缓存服务中缓存null值
2.用户黑名单(在网关,ip限流,限制相同ip直接封ip,黑名单存redis)
3.使用布隆过滤器(判断,一个数据可能存在或者一定不存在)
布隆过滤器:一个数据结构
2)缓存失效
某个缓存失效之后,大量的请求访问该数据,在第一个请求重建缓存回来之前,大量的请求发现缓存失效,都会去尝试重建缓存,从而导致数据库压力增加。
解决:
1、在重建缓存时,添加分布式锁
3)缓存雪崩
大量的缓存,在同一时刻一起失效。
解决:
1、新建缓存时,采用固定 + 随机数的方式设置过期时间
错开缓存过期时间
4)缓存预热
在项目运行之前,分析出热点数据,直接添加到缓存服务器中
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)