什么是缓存穿透 ? 怎么解决 ?
缓存穿透是指大量查询不存在的数据,当每次请求都在redis缓存查询不到信息,则这些大量的查询操作每次都会去查询数据库,则会导致数据库崩溃。
解决方法一:缓存空数据,查询返回的数据为空,仍把这个空结果进行缓存。
优点: 简单。
缺点:消耗内存,可能会发生不一致的问题。
解决方案二:布隆过滤器
优点:内存占用较少,没有多余key
缺点:实现复杂,存在误判
什么是缓存击穿 ? 怎么解决 ?
缓存击穿是指设置过期时间的key,当某个key过期时恰好有大量的key并发访问导致数据库崩塌。
解决方案一:互斥锁
解决方案二:逻辑过期
什么是缓存雪崩 ? 怎么解决 ?
缓存雪崩就是大量的key同时过期导致。导致请求直接往数据库进行访问导致数据库压力过大而崩溃。
解决方案:
给不同的
Key
的
TTL
添加随机值
利用
Redis
集群提高服务的可用性
给缓存业务添加降级限流策略
给业务添加多级缓存