一.缓存击穿、缓存雪崩、缓存穿透
① 缓存穿透:大量请求根本不存在的key
原因:请求根本不存在的资源(DB本身就不存在,Redis更是不存在)
解决方案:
1、对空值进行缓存
2、设置白名单
3、使用布隆过滤器
② 缓存雪崩:redis中大量key集体过期
原因:redis中大量key集体过期(请求压力放到DB上)
解决方案:
1、进行预先的热门词汇的设置,进行key时长的调整
2、实时调整,监控哪些数据是热门数据,实时的调整key的过期时长
3、使用锁机制
③ 缓存击穿:redis中一个热点key过期
解决方案:
1、进行预先的热门词汇的设置,进行key时长的调整
2、实时调整,监控哪些数据是热门数据,实时的调整key的过期时长
3、使用锁机制
二.@Autowired和@Resource区别
1、来源不同:@Autowired 来自 Spring 框架,而 @Resource 来自于(Java)JSR-250;
2、依赖查找的顺序不同:@Autowired 先根据类型再根据名称查询,而 @Resource 先根据名称3再根据类型查询;
3、支持的参数不同:@Autowired 只支持设置 1 个参数,而 @Resource 支持设置 7 个参数;
依赖注入的用法支持不同:@Autowired 既支持构造方法注入,又支持属性注入和 Setter 注入,而 4、@Resource 只支持属性注入和 Setter 注入;
5、编译器 IDEA 的提示不同:当注入 Mapper 对象时,使用 @Autowired 注解编译器会提示错误,而使用 @Resource 注解则不会提示错误。