Skip to content

Commit a7f161a

Browse files
authored
Update redis-caching-avalanche-and-caching-penetration.md
1 parent 5b8a84f commit a7f161a

1 file changed

Lines changed: 3 additions & 3 deletions

File tree

docs/high-concurrency/redis-caching-avalanche-and-caching-penetration.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
大约在 3 年前,国内比较知名的一个互联网公司,曾因为缓存事故,导致雪崩,后台系统全部崩溃,事故从当天下午持续到晚上凌晨 3~4 点,公司损失了几千万。
1616

17-
缓存雪崩的事前事中事后的解决方案如下
17+
缓存雪崩的事前事中事后的解决方案如下
1818
- 事前:redis 高可用,主从+哨兵,redis cluster,避免全盘崩溃。
1919
- 事中:本地 ehcache 缓存 + hystrix 限流&降级,避免 MySQL 被打死。
2020
- 事后:redis 持久化,一旦重启,自动从磁盘上加载数据,快速恢复缓存数据。
@@ -46,5 +46,5 @@
4646

4747
不同场景下的解决方式可如下:
4848
- 若缓存的数据是基本不会发生更新的,则可尝试将该热点数据设置为永不过期。
49-
- 若缓存的数据更新不频繁,且缓存刷新的整个流程耗时较少的情况下,则可以采用基于 redis、zookeepe r等分布式中间件的分布式互斥锁,或者本地互斥锁以保证仅少量的请求能请求数据库并重新构建缓存,其余线程则在锁释放后能访问到新缓存
50-
- 若缓存的数据更新频繁或者缓存刷新的流程耗时较长的情况下,可以利用定时线程在缓存过期前主动的重新构建缓存或者延后缓存的过期时间,以保证所有的请求能一直访问到对应的缓存
49+
- 若缓存的数据更新不频繁,且缓存刷新的整个流程耗时较少的情况下,则可以采用基于 redis、zookeeper 等分布式中间件的分布式互斥锁,或者本地互斥锁以保证仅少量的请求能请求数据库并重新构建缓存,其余线程则在锁释放后能访问到新缓存
50+
- 若缓存的数据更新频繁或者缓存刷新的流程耗时较长的情况下,可以利用定时线程在缓存过期前主动的重新构建缓存或者延后缓存的过期时间,以保证所有的请求能一直访问到对应的缓存

0 commit comments

Comments
 (0)