redis缓存和spring cache的集成

pom.xml文件中加入依赖关系:

   
    org.springframework.data   
    spring-data-redis   
    1.6.0.RELEASE   
   
   
    redis.clients   
    jedis   
    2.7.3   
 

在项目中集成基础配置

import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.interceptor.KeyGenerator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;

import java.util.ResourceBundle;

/**
 * 

* spring cache和redis的结合配置类 *

* * @author wangguangdong * @version 1.0 * @Date 16/2/25 * @see RedisCacheManager * @see JedisConnectionFactory * @see RedisTemplate * @see KeyGenerator */ @Configuration @EnableCaching @ComponentScan("com.kingdowin.xiugr.server") @PropertySource("classpath:/redis.properties") public class RedisCacheConfig extends CachingConfigurerSupport { private static final ResourceBundle bundle = ResourceBundle.getBundle("redis"); private String redisHost = bundle.getString("redis.ip"); private int redisPort = Integer.valueOf(bundle.getString("redis.port")); private String redisPassword = bundle.getString("redis.auth"); private int expireTime = Integer.valueOf(bundle.getString("redis.cache.expireTime")); @Bean public JedisConnectionFactory redisConnectionFactory() { JedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory(); // Defaults redisConnectionFactory.setHostName(redisHost); redisConnectionFactory.setPort(redisPort); redisConnectionFactory.setPassword(redisPassword); return redisConnectionFactory; } @Bean public RedisTemplate redisTemplate(RedisConnectionFactory cf) { RedisTemplate redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(cf); return redisTemplate; } /** * 缓存管理器 * @param redisTemplate * @return */ @Bean public CacheManager cacheManager(RedisTemplate redisTemplate) { RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate); // Number of seconds before expiration. Defaults to unlimited (0) cacheManager.setDefaultExpiration(expireTime);// Sets the default expire time (in seconds) return cacheManager; } /** * @description 自定义的缓存key的生成策略
* 若想使用这个key
* 只需要讲注解上keyGenerator的值设置为customKeyGenerator即可
* @return 自定义策略生成的key */ @Bean public KeyGenerator customKeyGenerator() { return (o, method, objects) -> { StringBuilder sb = new StringBuilder(); sb.append(o.getClass().getName()); sb.append(method.getName()); for (Object obj : objects) { sb.append(obj.toString()); } return sb.toString(); }; } }

配置注解

如果你的项目已经开启了注解的支持,并且已经扫描了配置所在的包,可以略过该步骤
否则请在你的spring配置文件中填写该代码,用以支持spring注解的扫描

      

参考的文章

Redis 缓存 + Spring 的集成示例
Spring Cache注解+Redis
joshua white's blog
Diggs Java | Spring Redis Cache Manager Example

你可能感兴趣的:(redis缓存和spring cache的集成)