在高并发的web应用中有时会面临这样一个问题,在memcache失效的一瞬间,数据库的并发访问会剧增,这有可能导致严重的故障。如何解决这个问题呢?有以下两个思路:
1. 在服务器上部署定时任务,定期维护memcache中的数据,前端应用只允许访问缓存中的数据。(适合更新不频繁或更新响应慢的应用,如排行榜类,但需要对缓存中的数据进行监控,防止空白数据出现)
2. 利用memcache本身,给更新缓存的操作加锁,以确保在失效时只有一个请求在做更新缓存的操作,对其他请求采用循环的方式,不断检查锁的状态,直至缓存更新成功,锁被取消为止。(适合更新频繁且更新响应快的应用,如评论系统)