缓存雪崩是指在高并发的系统中,如果缓存集中在某一时刻全部失效,那么在这一时刻所有的请求都会打到数据库,数据库会瞬间承受巨大的读压力,造成数据库连接异常,这种现象被称为缓存雪崩。
解决缓存雪崩的常见策略有:
设置不同的过期时间:给每个缓存数据设置不同的过期时间,避免所有数据同时更新,造成雪崩。
使用热点数据永不过期策略:对于一些热点数据,可以设置为永不过期,或者是手动进行更新。
双层缓存策略:使用两层缓存,一层是热点数据,一层是冷数据,热点数据常驻内存,冷数据有过期时间。
数据预热:在系统上线前,就将可能成为热点的数据加载到缓存中。
使用互斥锁:在缓存失效的时候,不是立即去load db,而是先使用缓存 工具 的某些带成功操作返回值的操作(比如 Redis 的SETNX或者 Memcached 的ADD)去set一个mutex key,当操作返回成功时,再进行load db的操作并回设缓存;否则,就重试整个get缓存的方法。
使用分布式缓存:比如使用Memcached集群,利用其分布式的特性,使得整个缓存服务的压力能够分散到多个缓存节点上,降低单个缓存节点的压力。
暂无回复。