美文网首页Redis
Redis使用中的常见问题

Redis使用中的常见问题

作者: Okami_ | 来源:发表于2019-01-25 23:47 被阅读0次

    缓存穿透

    • 缓存穿透指的是查询一个一定不存在的数据,由于不存在这个值,导致每次查询都会取DB上查询。
    • 解决方案:
        1. 缓冲一个空值
        1. 在查询之前按照一定规则过滤掉不符合规则的肯定不存在的值
        1. 使用布隆过滤器(BloomFilter),但是有一定的误判率,会将可能不存在的值误判为存在。如果判断为不存在,则不去查DB。

    缓存雪崩

    • 缓存雪崩指的是由于大量的key在相同的时间同时过期,导致大量的请求打到DB,导致DB压力过大
    • 解决方案:
        1. 错开过期时间
        1. 查询数据库的时候限流(RateLimit,令牌桶算法)
        1. 加锁查库,先查cache,如果没有内容则获取锁查DB,然后释放锁,唤醒其他线程

    热点数据击穿

    • 一些热点数据失效之后,大量的并发查询打到DB,导致DB压力变大
    • 解决方案:
        1. 加锁查库,先查cache,如果没有内容则获取所查DB,然后释放锁,唤醒其他线程
        1. 预判超时,缓存旧值(Guava Cache的RefreshAfterWrite)
        1. 预热,在系统启热点Key放在本地缓存动后先将热点数据加入到缓存
        1. 多级缓存
        • 热点Key放在应用节点本地缓存
        • 远程缓存定时从DB更新

    相关文章

      网友评论

        本文标题:Redis使用中的常见问题

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