使用 Spring data redis 结合 Spring cache 缓存数据配置

使用 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、因为实现方式为使用代理,所以类内部调用不会触发缓存

 

 

posted on 2017-08-13 21:15  _路上  阅读(344)  评论(0编辑  收藏  举报

导航