Spring Boot Redis 集成配置详解
springBoot熟悉后,集成一个外部扩展是一件很容易的事,集成Redis也很简单,看下面步骤配置:
一、添加pom依赖
org.springframework.boot spring-boot-starter-redis
二、创建RedisClient.java
注意该类存放的package
packageorg.springframework.data.redis.connection.jedis;
importjava.io.ByteArrayInputStream;
importjava.io.ByteArrayOutputStream;
importjava.io.IOException;
importjava.io.ObjectInputStream;
importjava.io.ObjectOutputStream;
importjava.io.UnsupportedEncodingException;
importorg.apache.commons.lang3.StringUtils;
importorg.slf4j.Logger;
importorg.slf4j.LoggerFactory;
importredis.clients.jedis.Jedis;
importredis.clients.jedis.Protocol;
importredis.clients.jedis.exceptions.JedisException;
/**
*工具类RedisClient
*因为本类中获取JedisPool调用的是JedisConnectionFactory中protected修饰的方法fetchJedisConnector()
*所以该类需要与JedisConnectionFactory在同一个package中
*
*@author单红宇(CSDNCATOOP)
*@create2017年4月9日
*/
publicclassRedisClient{
privatestaticLoggerlogger=LoggerFactory.getLogger(RedisClient.class);
privateJedisConnectionFactoryfactory;
publicRedisClient(JedisConnectionFactoryfactory){
super();
this.factory=factory;
}
/**
*put操作(存储序列化对象)+生效时间
*
*@paramkey
*@paramvalue
*@return
*/
publicvoidputObject(finalStringkey,finalObjectvalue,finalintcacheSeconds){
if(StringUtils.isNotBlank(key)){
redisTemplete(key,newRedisExecute
三、创建Redis配置类
RedisConfig.Java
packagecom.shanhy.example.redis;
importorg.springframework.context.annotation.Bean;
importorg.springframework.context.annotation.Configuration;
importorg.springframework.data.redis.connection.jedis.JedisConnectionFactory;
importorg.springframework.data.redis.connection.jedis.RedisClient;
importorg.springframework.data.redis.core.RedisTemplate;
importorg.springframework.data.redis.serializer.StringRedisSerializer;
/**
*Redis配置
*
*@author单红宇(CSDNcatoop)
*@create2016年9月12日
*/
@Configuration
publicclassRedisConfig{
@Bean
publicRedisTemplateredisTemplate(JedisConnectionFactoryfactory){
RedisTemplatetemplate=newRedisTemplate();
template.setConnectionFactory(factory);
template.setKeySerializer(newStringRedisSerializer());
template.setValueSerializer(newRedisObjectSerializer());
template.afterPropertiesSet();
returntemplate;
}
@Bean
publicRedisClientredisClient(JedisConnectionFactoryfactory){
returnnewRedisClient(factory);
}
}
RedisObjectSerializer.java
packagecom.shanhy.example.redis; importorg.springframework.core.convert.converter.Converter; importorg.springframework.core.serializer.support.DeserializingConverter; importorg.springframework.core.serializer.support.SerializingConverter; importorg.springframework.data.redis.serializer.RedisSerializer; importorg.springframework.data.redis.serializer.SerializationException; /** *实现对象的序列化接口 *@author单红宇(365384722) *@create2017年4月9日 */ publicclassRedisObjectSerializerimplementsRedisSerializer{ privateConverter serializer=newSerializingConverter(); privateConverter deserializer=newDeserializingConverter(); staticfinalbyte[]EMPTY_ARRAY=newbyte[0]; @Override publicObjectdeserialize(byte[]bytes){ if(isEmpty(bytes)){ returnnull; } try{ returndeserializer.convert(bytes); }catch(Exceptionex){ thrownewSerializationException("Cannotdeserialize",ex); } } @Override publicbyte[]serialize(Objectobject){ if(object==null){ returnEMPTY_ARRAY; } try{ returnserializer.convert(object); }catch(Exceptionex){ returnEMPTY_ARRAY; } } privatebooleanisEmpty(byte[]data){ return(data==null||data.length==0); } }
四、创建测试方法
下面代码随便放一个Controller里
@Autowired privateRedisTemplateredisTemplate; /** *缓存测试 * *@return *@authorSHANHY *@create2016年9月12日 */ @RequestMapping("/redisTest") publicStringredisTest(){ try{ redisTemplate.opsForValue().set("test-key","redis测试内容",2,TimeUnit.SECONDS);//缓存有效期2秒 logger.info("从Redis中读取数据:"+redisTemplate.opsForValue().get("test-key").toString()); TimeUnit.SECONDS.sleep(3); logger.info("等待3秒后尝试读取过期的数据:"+redisTemplate.opsForValue().get("test-key")); }catch(InterruptedExceptione){ e.printStackTrace(); } return"OK"; }
五、配置文件配置Redis
application.yml
spring: #Redis配置 redis: host:192.168.1.101 port:6379 password: #连接超时时间(毫秒) timeout:10000 pool: max-idle:20 min-idle:5 max-active:20 max-wait:2
这样就完成了Redis的配置,可以正常使用redisTemplate了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。