使用 JavaConfig 方式配置
依赖 jar 包: jedis、spring-data-redis
首先需要进行 Redis 相关配置
@Configuration public class RedisConfig { @Bean public JedisPoolConfig poolConfig() { JedisPoolConfig poolConfig = new JedisPoolConfig(); poolConfig.setMaxTotal(10); poolConfig.setMaxIdle(1); return poolConfig; } @Bean public RedisConnectionFactory redisConnectionFactory(JedisPoolConfig poolConfig) { JedisConnectionFactory cf = new JedisConnectionFactory(); cf.setHostName("localhost"); cf.setPort(6379); // cf.setPassword("XXX"); cf.setPoolConfig(poolConfig); return cf; } @Bean public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate redisTemplate = new RedisTemplate(); redisTemplate.setConnectionFactory(redisConnectionFactory); // 如果 key 确定使用 String 类型,可以使用这个序列化类,方便查看 // redisTemplate.setKeySerializer(new StringRedisSerializer()); // value 的序列化默认使用 JdkSerializationRedisSerializer redisTemplate.afterPropertiesSet(); return redisTemplate; } }
之后需要进行 Spring Cache 的配置
@Configuration // 启用缓存 @EnableCaching // 引用 Redis 的配置 @Import({RedisConfig.class}) public class CacheConfig { @Bean public CacheManager cacheManager(RedisTemplate redisTemplate) { RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate); // 设置默认过期时间(秒) cacheManager.setDefaultExpiration(60);
// 如果需要单独设置key的过期时间,可以使用 cacheManager.setExpires((Map<String, Long> expires) return cacheManager; } }
注意:
1、要进行缓存的类必须实现 Serializable 接口
2、因为实现方式为使用代理,所以类内部调用不会触发缓存