Redis
Redis基础
-
Redis的应用场景:分布式缓存,分布式锁,秒杀活动中实现计数器(String),延时任务(zset),消息队列(list,stream),附近的人(GeoHash),布隆过滤器
-
Redis基本数据结构: String,list,hash,set,zset,位图,HyperLogLog,GeoHash,stream,布隆过滤器
-
Redis数据存储细节:内存模型
-
Redis内存优化:内存优化
-
Redis的线程模型: 内存模型
分布式锁
Redis高可用
缓存异常
缓存雪崩: Redis中缓存的数据大面积同时失效,或者Redis宕机
- 数据预热
- 使用锁或队列(不实用,吞吐量并没有增加,用户体验差)
- 设置过期标志更新缓存
- 设置有效期时增加随机值
- 多级缓存,热点数据增加本地缓存
- 限流、降级
- 对于缓存层整体崩掉的情况:使用高可用架构,保证缓存层不崩掉。
缓存击穿: 热点key在失效的瞬间大量的请求过来
- 设置热点数据永不过期;
- 定时更新,比如这个热点数据的过期时间是1h,那么每到59minutes时,通过定时任务去更新这个热点key,并重新设置其过期时间
- 使用互斥锁:缓存失效的时候(判断拿出来的值为空),不是立即去load db,而是先使用缓存工具的某些带成功操作返回值的操作(比如Redis的SETNX或者Memcache的ADD)去set一个mutex key,当操作返回成功时,再进行load db的操作并回设缓存;否则,就重试整个get缓存的方法。
缓存穿透: 缓存和数据库中都没有的数据,可用户还是源源不断的发起请求
- 业务层校验;
- 布隆过滤器;
- 简单方法:如果一个查询返回的数据为空(不管是数据不存在,还是系统故障),我们仍然把这个空结果进行缓存,但它的过期时间会很短,最长不超过五分钟。
大Key、热key的处理?
数据库与redis的数据一致性?

浙公网安备 33010602011771号