Redis 缓存

Redis 缓存

缓存更新策略

  • 低一致性业务建议配置最大内存淘汰策略的方式使用。
  • 高一致性业务可以结合使用超时剔除和主动更新,这样即使主动更新出了问题,也能保证数据过期时间后删除脏数据。

穿透优化

缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,通常出于容错的考虑,如果从存储层查不到数据则不写入缓存层。缓存穿透将导致不存在的数据每次请求都要到存储层去查询,失去了缓存保护后端存储的意义。

通常可以在程序中分别统计总调用数、缓存层命中数、存储层命中数,如果发现大量存储层空命中,可能就是出现了缓存穿透问题。造成缓存穿透的基本原因有两个。第一,自身业务代码或者数据出现问题,第二,一些恶意攻击、爬虫等造成大量空命中。下面我们来看一下如何解决缓存穿透问题。

  • 缓存空对象。设置较短过期时间,自动剔除,可以减少内存占用;存储层有了数据,可以利用消息系统或其它方式清楚掉缓存中的空对象。

  • 布隆过滤器拦截

雪崩优化

  • 保证缓存层服务高可用性。和飞机都有多个引擎一样。
  • 依赖隔离组件为后端限流并降级

热点 Key 重建优化

在缓存失效的瞬间,有大量线程来重建缓存,造成后端负载加大,甚至可能会让应用崩溃。

  • 互斥锁