一 缓存雪崩
主要是redis挂了导致。
- 缓存雪崩解决方案:
* redis cluster保证高可用(或者redis replicatiion + sentianl)
* 系统内部应该有一个备份的缓存,比如ehcache,有临时缓存提供服务
* 通过hystrix提供限流降级服务,确保到达数据库的请求在一定范围内,多余的请求降级(返回异常等)
* redis一定要持久化
二 缓存穿透
主要是数据库中没有这个数据,导致缓存中也没有数据,于是每次过来的数据请求都会打击到数据库中。可能的情况,就是黑客大量请求的攻击,或者是系统bug导致获取一些不存在的数据。
- 缓存穿透解决方案:
获取的数据虽然在数据库中没有,但是只要想办法在缓存中有,那么下次再过来时,就会从缓存中获取了,从而不会穿透到数据库中。 比如获取一个不存在的id,那么就把这个id设定一个固定的特殊值放到redis中,比如null。 这样下一次再过来时,就会从redis中取了。
网友评论