美文网首页
Redis常见问题及其优化思路

Redis常见问题及其优化思路

作者: 许忠钰的博客 | 来源:发表于2021-06-21 08:56 被阅读0次

    大型互联网项目都是多级缓存思路,尽可能让大多数请求的数据在缓存中获得,即请求优先从一级缓存到二级三级缓存中获取数据,最后才会从数据库层面拿数据,缓存的高并发性能远远高于数据库层面,那么基于上述多级缓存思路,会出现如下几种情况

    1.缓存穿透
    即网络请求中带有大量缓存中没有的参数进行访问,那么最终我们的请求会走到数据库层面,如果量非常大,将会导致数据库性能急剧下降,即缓存穿透

    解决思路
    缓存空对象
    即查询不到该缓存数据将该Key缓存一个null对象,设置失效时间 

    2.缓存失效
    短时间类加入了大量秒杀商品数据,可能设置的缓存过期时间是一样的,这类数据缓存可能会在同一时间失效,统一时间失效后请求就会到达数据库,导致数据库性能大幅度下降

    解决思路
    加入数据时缓存时间根据基数设置随机值,减少大量缓存同时失效的几率

    3.缓存雪崩
    压力太大,即多级缓存中有一级出现问题停止服务,一个缓存服务出现问题似乎问题不大,但是很可能出现级联反应导致其他缓存服务压力过大,导致出现的问题(雪球)越来越大,最后导致数据库奔溃,整个网站无法访问

    解决思路:
    保证整个缓存架构的高可用

    限流:同时有几亿用户下单,限制请求流量的大量同时涌入(消息队列中间件)
    熔断
    降级

    4.热点Key
    冷数据不会长时间存储在缓存中,而是存在数据库中,突然有一天收到大量的冷数据Key访问,导致穿透到数据库,数据库并发量大,导致数据库压力过大;

    5.缓存与数据库双写不一致
    1.读多写少场景 读写锁  读读不互斥 读写互斥
    2.延迟双删

    相关文章

      网友评论

          本文标题:Redis常见问题及其优化思路

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