前言
redis 是一个基于内存以键值对(key、value)存储的数据库,常用来做缓存的中间件,有几个常见的业务名词一起来了解一下
雪崩
场景:这真是一个很形象的概念,大家可以想象一下,打雪仗的雪球打到物体瞬间四射,以及电影里面一个喷嚏引起的雪山崩塌
概念:原本好好的缓存,瞬间全部失效
解决:化整为零,把key的有效期疏散,加随机数
击穿
场景:举一个或许不恰当的例子,好好的电容因为电压过大被击穿,一个弹簧压力过大,无法反弹
概念:redis缓存刚开始起作用,因为压力流量过大导致的失效
解决:流量过大是主因,那就限流,可以考虑 网关,接口,方法 ,加锁,队列
穿透
场景:穿了金丝软甲本以为可以刀枪不入,结果还是一命呜呼
概念:redis根本没起到缓存的作用,直接把压力放到数据库,导致数据库瘫痪或者宕机
解决:缓存没起作用那就让它起作用,可以把没查到的,做一个空值缓存,设定一个有效期
缓存前置
前提:
1.确保服务的共享一个缓存系统
2.约定一个公共的key
3.具体的失效时间根据具体业务来定
做法 :
在调用缓存接口的时,先查一下缓存,没有在调用缓存接口