Redis缓存设计原则

 

  • 缓存热数据
  • 缓存读写顺序:读,先缓存,后数据库;写,先数据库,后缓存
  • 所有缓存数据都应该设置过期时间
  • 缓存的过期时间应该避免集中过期,造成缓存击穿
  • 缓存key具备可读性,应避免不同业务出现同名的key,简单缩写可节省内存空间
  • 避免缓存穿透,数据库中查不到的数据,可在Redis中设置空值,以避免缓存无数据而每次达到数据库
  • 缓存预热,上线之前可预先将数据写入缓存中
  • 数据一致性问题,根据业务需求选择合适的缓存更新策略:
    • 主动更新:在数据源发生变化时同步更新缓存。一致性高,维护成本较高
    • 被动删除:设置过期时间。一致性较低,维护成本低
  • 缓存雪崩问题,缓存由于某些原因不能提供服务,
    • 保证缓存服务高可用
    • 服务限流并降级
    • 提前演练缓存挂掉后出现的问题
  • 热点数据问题,当一个热点数据并发量非常大,缓存失效瞬间,大量线程重建缓存,造成数据源压力加大
    • 互斥锁:只允许一个线程重建缓存,其他线程等待执行完再从缓存获取。如果出现问题,可能会导致死锁
    • 永不过期,定期构建缓存;在特殊情况下数据源发生变化,会导致数据不一致
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章