将一千万用户白名单load缓存,用户请求的时候判断该用户是否是缓存里面的用户
1、springboot实现初始化加载配置(实现缓存预热)
1、采用实现springboot ApplicationRunner
该方法仅在SpringApplication.run(…)完成之前调用
2、采用实现InitializingBean
InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet()方法。
在spring初始化bean的时候,如果bean实现了InitializingBean接口,
在对象的所有属性被初始化后之后才会调用afterPropertiesSet()方法
一般采用实现InitializingBean的方式预热数据
步骤:
1)class RangingService implements InitializingBean
2)@Override
public void afterPropertiesSet() throws Exception {
System.out.println("======enter init bean=======");
this.rankSaleAdd();
}
3)预热方法,查询数据库数据,加到redis缓存
private static final String SALESCORE = "sale_score_rank:";
public void rankSaleAdd() {
UserScoreExample example = new UserScoreExample();
example.setOrderByClause("id desc");
List<UserScore> userScores = userScoreMapper.selectByExample(example);
userScores.forEach(userScore -> {
String key = userScore.getUserId() + ":" + userScore.getName();
redisService.zAdd(SALESCORE, key, userScore.getUserScore());
});
}
/**
* 有序集合添加
*
* @param key
* @param value
* @param scoure
*/
public void zAdd(String key, Object value, double scoure) {
ZSetOperations<String, Object> zset = redisTemplate.opsForZSet();
zset.add(key, value, scoure);
}
2.
1、springboot实现初始化加载配置(实现缓存预热)
1、采用实现springboot ApplicationRunner
该方法仅在SpringApplication.run(…)完成之前调用
2、采用实现InitializingBean
InitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet()方法。
在spring初始化bean的时候,如果bean实现了InitializingBean接口,
在对象的所有属性被初始化后之后才会调用afterPropertiesSet()方法
2、初始化同步redis数据
3、初始化完成再放入请求