2023-04-20 16:58:41
事前:采用Redis高可用方案,如主从+哨兵模式或Redis cluster,避免全盘崩溃。
事中:
使用本地ehcache缓存结合hystrix限流&降级机制,避免MySQL被大量请求打死。
通过缓存reload机制,预先更新缓存,在即将发生大并发访问前手动触发加载缓存。
事后:利用Redis持久化功能,一旦重启,自动从磁盘上加载数据,快速恢复缓存数据。
若缓存数据基本不会更新:尝试将该热点数据设置为永不过期。
若缓存数据更新不频繁且刷新流程耗时较少:采用基于Redis、zookeeper等分布式中间件的分布式互斥锁,或者本地互斥锁,保证仅少量请求能请求数据库并重新构建缓存,其余线程在锁释放后访问新缓存。
若缓存数据更新频繁或刷新流程耗时较长:利用定时线程在缓存过期前主动重新构建缓存,或者延后缓存的过期时间,确保所有请求能一直访问到对应的缓存。