过期缓存:如何防止缓存被流量打穿?
防止过期缓存被流量打穿(缓存雪崩或缓存穿透)是缓存设计中的一个关键问题。以下是一些有效的方法来避免这些问题:
1. 设置不同的过期时间(过期抖动)
- 问题:如果大量缓存同时过期,可能导致瞬时高并发请求直接打到后端服务,造成压力激增。
 - 
		解决方案:为不同缓存键设置一个随机范围内的过期时间(如 
60s + rand(0,10s)),使缓存失效时间分散,减少同一时间的大量请求同时触发缓存更新。 
2. 缓存预热
- 问题:缓存过期后,第一次请求可能会因未命中缓存导致后端压力。
 - 
		解决方案:
		
- 在缓存即将过期前,后台异步任务或定时任务预先加载并更新缓存。
 - 例如,使用类似「双写缓存」策略,定期将新的数据更新到缓存中。
 - 利用消息队列通知更新。
 
 
热门日志
分类
- git(9)
 - Mac(7)
 - C(1)
 - memcache(1)
 - Python(32)
 - Vim(8)
 - sed(2)
 - ansible(3)
 - awk(4)
 - shell(3)
 - Django(4)
 - ssdb(1)
 - bat(4)
 - svn(0)
 - docker(1)
 - Tornado(1)
 - go(2)
 - 架构(19)
 - Vue(1)
 - game(2)
 - AI(1)
 - Windows(8)
 - Java(8)
 - Mysql(38)
 - Ajax(2)
 - Jsp(1)
 - Struts(8)
 - Linux(73)
 - JavaScript(39)
 - Staruml(0)
 - Mouth(1)
 - Html(6)
 - Php(102)
 - Message(51)
 - Lua(10)
 - Compute(1)
 - Redis(7)
 - Nginx(12)
 - Jquery(1)
 - Apache(1)
 - cocos2d-x(8)
 - about(1)
 

