@Configuration @EnableCaching(proxyTargetClass = true) public class CacheConfig extends CachingConfigurerSupport { @Autowired private Environment env; @Bean public JedisConnectionFactory redisConnectionFactory(JedisPoolConfig jedisPoolConfig) { JedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory(); redisConnectionFactory.setHostName(env.getProperty("redis.host")); redisConnectionFactory.setPort(Integer.valueOf(env.getProperty("redis.port"))); redisConnectionFactory.setPassword(env.getProperty("redis.password")); redisConnectionFactory.setTimeout(Integer.valueOf(env.getProperty("redis.timeout"))); redisConnectionFactory.setPoolConfig(jedisPoolConfig); redisConnectionFactory.setDatabase(Integer.valueOf(env.getProperty("redis.db.index"))); return redisConnectionFactory; } @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(connectionFactory); redisTemplate.setKeySerializer(new StringRedisSerializer()); // redisTemplate.setValueSerializer(new FastJson2JsonRedisSerializer<>(Object.class)); return redisTemplate; } @Bean public JedisPoolConfig jedisPoolConfig() { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMinIdle(Integer.valueOf(env.getProperty("redis.maxIdle"))); jedisPoolConfig.setMaxIdle(Integer.valueOf(env.getProperty("redis.maxActive"))); jedisPoolConfig.setMaxWaitMillis(Integer.valueOf(env.getProperty("redis.maxWait"))); jedisPoolConfig.setTestOnBorrow(Boolean.valueOf(env.getProperty("redis.testOnBorrow"))); return jedisPoolConfig; } /** * 缓存管理器 * * @param redisTemplate * @return */ @Bean(name = "springCacheManager") public CacheManager cacheManager(RedisTemplate redisTemplate) { RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate); //设置过期时间为0,表示永不过期 cacheManager.setDefaultExpiration(Long.valueOf(env.getProperty("redis.cache.default.expireTime"))); cacheManager.setExpires(getCacheExpires()); cacheManager.setUsePrefix(true); return cacheManager; } //配置缓存过期时间 private Map<String, Long> getCacheExpires() { Map<String, Long> expires = new HashMap<>(); expires.put(CachingSessionDAO.ACTIVE_SESSION_CACHE_NAME, 12 * 60 * 60L); //12小时 expires.put(Resource.CACHE_NAME, 24 * 60 * 60L); //24个小时 return expires; } @Bean public CacheKeyGenerator cacheKeyGenerator() { return new SimpleCacheKeyGenerator("cacheName"); }