redis - 12 企业级解决方案
1. 缓存预热(不是很懂)
2. 缓存雪崩
1. 原因
大量数据同一时间失效,导致redis中没有该数据,服务端直接请求数据库,对数据库造成极大的压力,甚至崩溃
2. 解决方案
从redis本身入手:
a. 数据的有效期进行错开,不要设置同样的有效期
b. 超热的数据使用永久key
c. 对于即将过期的数据做访问量分析,对于热点数据进行延时(人工+脚本)
从架构设计入手
a. 多级缓存架构,nginx+redis+ehcache
b. 对数据库进行性能优化
c. 设置灾难预警机制,cpu,容量,查询时间等
d. 高峰限流,损耗一定的用户体验,保护服务器
3. 缓存击穿
1. 单个key在redis中没有缓存或失效,当有大量的请求发过来的时候,都去请求数据库,导致数据库压力过大 2. 解决方案 预防为主,提前考量
4. 缓存穿透
1. 访问一个根本不存在的数据,redis中肯定没有,所以要去数据库查,其实数据库也没有,但是会对数据库造成查询压力(一般是黑客攻击) 2. 解决方案 a. 白名单过滤数据库不可能存在的数据 b. 实时监控,然后人工对应