雪崩
概念
所谓的 redis 雪崩就是大量的缓存 key 在某一时刻大量失效,导致请求直接走到的数据库,大量的读操作给数据库造成了重大的压力。
解决办法
- 在写入 redis 时把失效时间设置成随机的,防止某一时刻大量失效问题。
- 把经常访问的热点 key 存到不同的 redis 节点,防止大量请求去请求同一节点。
- 开始一个定时任务去定时刷新缓存,防止失效。
- 不设置失效时间😂。
穿透
概念
当去请求一个 redis 中不存在的 key 时,redis 没有读到值回去请求数据库。当有大量这样的请求时,就会有大量的请求走到数据库,给数据库造成压力,这就是所谓的缓存穿透。
解决办法
- 参数校验,不合法的参数直接 return (应该是最优解)。
- 将数据库查到的值立刻缓存起来,但是当非法参数不同时,此方法作用不大,因为每次还是回去请求数据库。
击穿
概念
某个热点 key 缓存失效后,大量的请求来到数据库,这个过程叫做击穿。
解决办法
- 设置缓存不失效😂
- 使用互斥锁文章链接待定