Redis

Redis基础

  • Redis的应用场景:分布式缓存,分布式锁,秒杀活动中实现计数器(String),延时任务(zset),消息队列(list,stream),附近的人(GeoHash),布隆过滤器

  • Redis基本数据结构: String,list,hash,set,zset,位图,HyperLogLog,GeoHash,stream,布隆过滤器

  • Redis数据存储细节:内存模型

  • Redis内存优化:内存优化

  • 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的数据一致性?

posted @ 2022-08-24 16:52  空中行走的鱼  阅读(30)  评论(0)    收藏  举报