Redis缓存雪崩和缓存穿透

一 缓存雪崩

主要是redis挂了导致。

  • 缓存雪崩解决方案:
    * redis cluster保证高可用(或者redis replicatiion + sentianl)
    * 系统内部应该有一个备份的缓存,比如ehcache,有临时缓存提供服务
    * 通过hystrix提供限流降级服务,确保到达数据库的请求在一定范围内,多余的请求降级(返回异常等)
    * redis一定要持久化

二 缓存穿透

主要是数据库中没有这个数据,导致缓存中也没有数据,于是每次过来的数据请求都会打击到数据库中。可能的情况,就是黑客大量请求的攻击,或者是系统bug导致获取一些不存在的数据。

  • 缓存穿透解决方案:
    获取的数据虽然在数据库中没有,但是只要想办法在缓存中有,那么下次再过来时,就会从缓存中获取了,从而不会穿透到数据库中。 比如获取一个不存在的id,那么就把这个id设定一个固定的特殊值放到redis中,比如null。 这样下一次再过来时,就会从redis中取了。

你可能感兴趣的:(Redis缓存雪崩和缓存穿透)