zoukankan      html  css  js  c++  java
  • 缓存中常见的概念及解决方案

    缓存中常见的概念及解决方案


    缓存穿透

    1、概念

    用户查询数据,在数据库中以及缓存中(redis)都查询不到,导致每次请求来时,缓存(redis)中查询一次,数据库查询一次,最后返回空,每次请求都会有俩次无用的查询,缓存命中率低

    2、解决方案

    1. 对null值设置缓存,每隔一段时间过期
    2. 使用布隆过滤器缓存需要的值,直接过滤 掉找不到值得key

    缓存雪崩

    1、概念

    缓存(redis)服务挂掉,缓存在同一时间发生大面积的实效,请求每次查完数据未能将数据缓存倒数据库中,导致所有的请求都会去查询数据库,造成同一时间数据库的cpu及内存负载过高的问题,甚至宕机。

    2、解决方案

    1)redis高可用,使用哨兵部署或者集群部署模式,保证缓存服务的高可用
    2)为key设置不同的过期时间,让key的过期时间均衡分布,防止同一时间缓存大面积的实效。
    3)使用锁和队列,对请求进行异步处理,降低数据库的压力。
    4)使用缓存降级策略(使用guava或ehcache等本地缓存 或者对服务访问进行限流、熔断及降级)

    缓存击穿

    1、概念

    某个key非常热点,在不停的坑着大并发,大并发集中对这一个点进行访问,当这个key失效的瞬间,持续的高并发会击破缓存,直接请求数据库,导致数据库的cpu及内存负载过高,甚至宕机。

    2、解决方案

    1)设置某些热点key的过期时间(延长或者永不过期)
    2) mutex key互斥锁

  • 相关阅读:
    Qt中实现单例模式(SingleTon)
    毕设开发手记(二)
    Qt中由表中单元格的QModelIndex获取Global Pos的正确方法
    Qt的槽可以使用默认参数
    C#结构的了解
    dos命令集江南技术联盟
    C#中的abstract与virtual的用法
    [转]六种删除数据库重复行的方法
    PL/SQL的TO_CHAR()与TO_DATE()
    索引索引索引(转)
  • 原文地址:https://www.cnblogs.com/jakaBlog/p/10759519.html
Copyright © 2011-2022 走看看