Configuration
/**
* Created by jiyang on 15:44 2017/12/20
*/
@Configuration
public class RedisConfig {
@Value("${redis.host:172.16.0.17}")
private String redisHost;
@Value("${redis.port:6379}")
private int redisPort;
@Value("${chcheRedis.host:172.16.0.17}")
private String cacheRedisHost;
@Value("${chacheRedis.port:6379}")
private int cacheRedisPort;
// 1 创建 JedisPoolConfig
@SuppressWarnings("Duplicates")
@Bean
public JedisPoolConfig jedisPoolConfig(){
JedisPoolConfig poolConfig= new JedisPoolConfig();
poolConfig.setMaxTotal(100);// 最大连接数
poolConfig.setMaxIdle(50);// 最大空闲数
poolConfig.setMaxWaitMillis(1000);//最大建立连接等待时间
return poolConfig;
}
// 2 创建 RedisConnectionFactory
@Bean
@Primary
public RedisConnectionFactory jedisConnectionFactory(){
JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(jedisPoolConfig());
jedisConnectionFactory.setHostName(redisHost);
jedisConnectionFactory.setPort(redisPort);
return jedisConnectionFactory;
}
@Bean(name = "cacheConnectionFactory")
public RedisConnectionFactory cacheConnectionFactory(){
JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(jedisPoolConfig());
jedisConnectionFactory.setHostName(redisHost);
jedisConnectionFactory.setPort(redisPort);
return jedisConnectionFactory;
}
// 3 创建 StringRedisTemplate
@Primary
@Bean
public StringRedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
return new StringRedisTemplate(redisConnectionFactory);
}
@Bean(name = "chacheRedis")
public StringRedisTemplate cacheRedisTemplate(@Qualifier("cacheConnectionFactory") RedisConnectionFactory redisConnectionFactory){
return new StringRedisTemplate(redisConnectionFactory);
}
// 4 创建 RedisTemplate
@Bean(name = "cacheRedisForObject")
public RedisTemplate cacheRedisForObject(@Qualifier("cacheConnectionFactory") RedisConnectionFactory redisConnectionFactory){
RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.setConnectionFactory(redisConnectionFactory);
return redisTemplate;
}
// 5 创建CacheManager
@Bean
public RedisCacheManager cacheManager() {
RedisCacheManager redisCacheManager = new RedisCacheManager(springBootRedisCache(cacheConnectionFactory()));
redisCacheManager.setLoadRemoteCachesOnStartup(true); // 启动时加载远程缓存
redisCacheManager.setUsePrefix(true); // 是否使用前缀生成器
redisCacheManager.setCachePrefix(cacheName -> ("LONGDAI_CACHE_" + cacheName + ":").getBytes());
redisCacheManager.setExpires(CacheConstants.getExpirationMap());
return redisCacheManager;
}
public RedisTemplate<String, Object> springBootRedisCache(@Qualifier("cacheConnectionFatory") RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(redisConnectionFactory);
redisTemplate.setEnableDefaultSerializer(false);
redisTemplate.setKeySerializer(stringRedisSerializer());
redisTemplate.setValueSerializer(genericJackson2JsonRedisJsonSerializer());
redisTemplate.afterPropertiesSet();
return redisTemplate;
}
@Bean
public StringRedisSerializer stringRedisSerializer() {
return new StringRedisSerializer();
}
@Bean
public GenericJackson2JsonRedisSerializer genericJackson2JsonRedisJsonSerializer() {
return new GenericJackson2JsonRedisSerializer();
}
@Bean
public KeyGenerator keyGenerator() {
return (target, method, params) -> {
StringBuilder sb = new StringBuilder();
sb.append(target.getClass().getName());
sb.append("_");
sb.append(method.getName());
sb.append("_");
for (int i = 0; i < params.length; i++) {
sb.append(params[i].toString());
if (i != params.length - 1) {
sb.append("_");
}
}
return sb.toString();
};
}
}
public class CacheConstants {
private CacheConstants() {
}
public static final String CACHE_NAME_TRANSFER_DEBT_LIST = "longdai_front_page_transferDebtsList";
public static final Long TRANSFER_DEBT_LIST_EXPIRATION_TIME_IN_SECONDS = 10 * 60L;
public static final String CACHE_NAME_FUND_PLAN_LIST = "longdai_front_page_fundPlanList";
public static final Long FUND_PLAN_LIST_EXPIRATION_TIME_IN_SECONDS = 10 * 60L;
public static final String CACHE_NAME_FUND_PLAN_DETAIL = "longdai_fund_plan_detail";
public static final Long FUND_PLAN_DETAIL_EXPIRATION_TIME_IN_SECONDS = 10 * 60L;
public static Map<String,Long> getExpirationMap() {
Map<String, Long> expirationMap = new HashMap<>();
expirationMap.put(CACHE_NAME_TRANSFER_DEBT_LIST, TRANSFER_DEBT_LIST_EXPIRATION_TIME_IN_SECONDS);
expirationMap.put(CACHE_NAME_FUND_PLAN_LIST, FUND_PLAN_LIST_EXPIRATION_TIME_IN_SECONDS);
expirationMap.put(CACHE_NAME_FUND_PLAN_DETAIL, FUND_PLAN_DETAIL_EXPIRATION_TIME_IN_SECONDS);
return expirationMap;
}
}
TestController.java
/**
* Created by jiyang on 16:10 2017/12/15
*/
@Controller
@RequestMapping("/tester")
public class TestController {
@Autowired
private CacheRequestService cacheRequestService;
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Value("${message.data.name:2}")
private String name;
@Value("${message.data.password:ps}")
private String password;
@RequestMapping(value = "/vip/upgrade", method = RequestMethod.GET)
@ResponseBody
public Object vipUpgrade() {
cacheRequestService.listUsers();
return this.password;
}
@RequestMapping(value = "/v2", method = RequestMethod.GET)
@ResponseBody
public Object getV() {
return stringRedisTemplate.opsForValue().get("channel_secret_key_00880001");
}
}