1.引入jar包
<!-- Redis依赖 -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.6.2.RELEASE</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.4.2</version>
</dependency>
<!-- Redis依赖 -->
注:<exclusions></exclusions>表示排除同一版本不相干jar包,避免jar包冲突
2.配置redis
@Configuration
@EnableCaching
public class RedisConfig implements CachingConfigurer{
/** redis缓存服务器地址 */
@Value("${redis.host}")
private String host;
/** redis缓存服务器端口 */
@Value("${redis.port}")
private Integer port;
/** redis缓存服务器连接超时时间 */
@Value("${redis.timeout}")
private Integer timeout;
/**
* jedis 配置
*
* @return
*/
@Bean
public JedisPoolConfig JedisPoolConfig() {
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMaxIdle(0);
poolConfig.setTestOnBorrow(true);
return poolConfig;
}
/**
* redis服务器中心
*
* @return
*/
// ***********************redis服务器中心begin************************
@Bean
public JedisConnectionFactory JedisConnectionFactory() {
JedisConnectionFactory connectionFactory = new JedisConnectionFactory();
connectionFactory.setPoolConfig(JedisPoolConfig());
connectionFactory.setPort(port);
connectionFactory.setHostName(host);
connectionFactory.setTimeout(timeout);
return connectionFactory;
}
@Bean
public RedisTemplate<String, String> redisTemplate() {
RedisTemplate<String, String> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(JedisConnectionFactory());
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
return redisTemplate;
}
// *********************redis服务器中心end**************************
/**
* 配置缓存
*
* @return
*/
@Bean
public RedisCacheManager cacheManager() {
RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate());
cacheManager.setDefaultExpiration(300);
return cacheManager;
}
/**
* 缓存key策略
* key=类名+方法名+参数
*/
@Override
@Bean
public KeyGenerator keyGenerator() {
return new KeyGenerator(){
@Override
public Object generate(Object target,
java.lang.reflect.Method method, Object... params) {
StringBuilder sb = new StringBuilder();
sb.append(target.getClass().getName());
sb.append(method.getName());
for (Object obj : params) {
if(null!=obj){
obj.toString();
}
sb.append(obj);
}
return sb.toString();
}
};
}
}
3.添加程序启动时加载配置类
public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected String[] getServletMappings() {
return new String[]{"/action/*", "*.html"};
}
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[] {RedisConfig.class};//配置文件添加处
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] {MVCConfig.class};//web配置文件添加处
}
@Override
protected Filter[] getServletFilters() {
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
characterEncodingFilter.setEncoding("UTF-8");
characterEncodingFilter.setForceEncoding(true);
return new Filter[] {characterEncodingFilter};
}
@Override
protected void customizeRegistration(Dynamic registration) {
//TODO: use a path value from config file
MultipartConfigElement multipartConfig = new MultipartConfigElement("");
registration.setMultipartConfig(multipartConfig);
}
}
4.这样就可以使用缓存
在方法或者类上添加使用
@Cacheable(value="user") 添加缓存
@CacheEvict()清除缓存
@CachePut()更新缓存