redis缓存问题

 

缓存穿透 :某个用户查询redis内存中查不到数据,然后从数据库里面取,数据库也没有这个数据,当用户很多的时候
缓存都没有命中,都去查询持久层数据,这会给数据库带来很大的压力

解决方案:布隆过滤器
给这个缓存键设置个空值,同时设置过期时间,不过会导致会占用更多的缓存,
即使设置了过期时间 还是会存在缓存层与数据层有一段时间的窗口的不一致,
对需要保持一致性的业务会有影响

 


缓存击穿 : 与缓存穿透不同的是缓存击穿是指redis缓存查不到数据,但是数据库能查到数据,而缓存穿透是redis缓存和数据库都查不到数据。

缓存中的一个key非常热门,不停的扛着大并发,被集中一点访问,当这个key失效的瞬间,持续的大并发就会击穿缓存
直接访问数据库,会给数据库带来很大的压力
解决方案:设置热点缓存key永不失效
加分布式锁,保证每个key同时只有一个线程能去访问后台服务,其他线程在没有获得锁的权限只需要等待即可,
不过这种方式将高并发的压力转移到了分布式锁上面,对分布式锁的考验很大

缓存雪崩:在某个时间段,缓存集中过期失效
解决方案:

缓存过期时间设置分散,避免大量缓存同时过期

redis高可用,多设置几个redis服务器,一台挂掉用另外一台就行,搭建集群。

 

posted @ 2021-04-26 17:04  ~╰☆終極﹏o  阅读(44)  评论(0)    收藏  举报