redis缓存使用存在的问题与解决方案

1.缓存的基本原理

为什么要使用缓存存数据呢?首先缓存的存储介质访问和操作速度飞快,可以减少数据库交互,另一方面,缓存的数据如果是计算后的数据,那么可以起到减少计算的作用。

可以用来缓存的数据: 提前复杂计算后的数据,基础数据,固定不变数据,热点数据,很少变化的数据。

使用缓存存在的问题
  1. 频繁修改数据,刚缓存后的数据,还来不及读,就被更新了,缓存的是脏数据。
    2.缓存的数据不是热点数据,浪费宝贵的内存资源。
    3.数据不一致与脏读

  2. 缓存雪崩: 大量的缓存的key同时因为过期时间失效了,导致全部的请求一瞬间刚好都走数据库,这时候数据库马上就挂了。重启数据库后也会马上就挂。

    这种处理比较简单,存redis缓存数据时,每个key都添加一个原有基础上的随机过期时间就可以了。

    如果redis是集群,将热点数据均匀分布在随机redis库中,也能避免全部失效问题。

    5.缓存穿透
    指的是缓存以及数据库中都不存在的数据,用户不断的发起请求,那么就会越过缓存不断的去数据库找不存在的数据,导致数据连接过大,严重的会宕机。
    解决方案可以做参数校验,过滤不存在的key。方法2.使用布隆过滤器

6.缓存预热: 一些热点数据,一上线就会有大量请求,直接请求到数据库,这时候数据库会马上扛不住,我们可以在热点数据引用前,提前存到缓存中,这就叫缓存预热。

7.缓存击穿:这个指的是一个key的并发访问量非常的大,不断有请求在获取这个key,这个key不断扛着大并发,当这个key突然失效的瞬间,持续的大并发就会穿破缓存,直接请求数据库。
处理方式:设置热点数据永远不过期。或者加上互斥锁就能搞定了。

待续。。。

你可能感兴趣的:(redis缓存使用存在的问题与解决方案)