码农百科 缓存雪崩

rafaela · 2023-08-03 17:23:46 · 热度: 16

缓存雪崩是指在高并发的系统中,如果缓存集中在某一时刻全部失效,那么在这一时刻所有的请求都会打到数据库,数据库会瞬间承受巨大的读压力,造成数据库连接异常,这种现象被称为缓存雪崩。

解决缓存雪崩的常见策略有:

  • 设置不同的过期时间:给每个缓存数据设置不同的过期时间,避免所有数据同时更新,造成雪崩。

  • 使用热点数据永不过期策略:对于一些热点数据,可以设置为永不过期,或者是手动进行更新。

  • 双层缓存策略:使用两层缓存,一层是热点数据,一层是冷数据,热点数据常驻内存,冷数据有过期时间。

  • 数据预热:在系统上线前,就将可能成为热点的数据加载到缓存中。

  • 使用互斥锁:在缓存失效的时候,不是立即去load db,而是先使用缓存 工具 的某些带成功操作返回值的操作(比如 Redis 的SETNX或者 Memcached 的ADD)去set一个mutex key,当操作返回成功时,再进行load db的操作并回设缓存;否则,就重试整个get缓存的方法。

  • 使用分布式缓存:比如使用Memcached集群,利用其分布式的特性,使得整个缓存服务的压力能够分散到多个缓存节点上,降低单个缓存节点的压力。

猜你喜欢:
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册