美文网首页
redis缓存使用存在的问题与解决方案

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

作者: 先生zeng | 来源:发表于2020-02-25 23:08 被阅读0次
    1.缓存的基本原理

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

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

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

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

      这种处理比较简单,存redis缓存数据时,每个key都添加一个原有基础上的随机过期时间就可以了。
      如果redis是集群,将热点数据均匀分布在随机redis库中,也能避免全部失效问题。

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

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

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

    待续。。。

    相关文章

      网友评论

          本文标题:redis缓存使用存在的问题与解决方案

          本文链接:https://www.haomeiwen.com/subject/ogchchtx.html