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){ RedisTemplate template=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了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。