1. 缓存穿透
指redis内存数据库中没有,访问持久层获取数据的过程。
解决方案:
1. 布隆过滤器。将所有可能存在的数据哈希到一个足够大的bitap中,不存在的时候被这个bitmap拦截掉,从而避免了访问持久层的压力。
2. 设置空值法,查询到的数据为空或者异常时,将这个数据的value设置为空放到redis中,下次就可以从缓存中取值了。
2. 缓冲雪崩
指某一个时间段,缓冲集中过期失效。
解决方案:
1. 延长缓存的失效时间
2. 给每一个缓存数据增加相应的缓存标记,记录缓存是否失效。如果缓存失效,则更新数据缓存。
3. 缓存预热
系统启动的时候,将需要缓存的数据加载到缓存中
4. 缓存更新
1. 定时的清理过期的缓存。
2. 请求时检查缓存是否过期,过期的话更新缓存。
5. 缓存降级
当访问量大的时候,可以通过一些方案,放弃一些数据的缓存机制,保证正常功能的缓存正常运行。
6. 缓存热点key
1. 互斥锁
2. 永不过期