详解spring boot starter redis配置文件
spring-boot-starter-Redis主要是通过配置RedisConnectionFactory中的相关参数去实现连接redisservice。
RedisConnectionFactory是一个接口,有如下4个具体的实现类,我们通常使用的是JedisConnectionFactory。
在springboot的配置文件中redis的基本配置如下:
#Redis服务器地址 spring.redis.host=192.168.0.58 #Redis服务器连接端口 spring.redis.port=6379 #Redis服务器连接密码(默认为空,如果redis服务端配置文件开启了requirepass密码,此处就应该填写相应的配置密码) spring.redis.password= #连接超时时间(毫秒) spring.redis.timeout=0
上边这4项是在JedisConnectionFactory类中的基本配置项,里边其实还包含了一些比如连接池,集群,主从,哨兵等的配置,这里先简单介绍下连接池(JedisPoolConfig),需要了解其它配置了可以看下源码。GenericObjectPoolConfig是JedisPoolConfig的父类,主要提供了maxTotal、maxIdle、maxIdle共三个参数的配置,其中还设置了默认的参数。
#连接池最大连接数(使用负值表示没有限制,对应maxTotal) spring.redis.pool.max-active=8 #连接池中的最大空闲连接 spring.redis.pool.max-idle=8 #连接池中的最小空闲连接 spring.redis.pool.min-idle=0
配置文件配置好后,还需要建立一个redis的配置类,主要用来配置key和value的序列化及加载配置文件中的相关参数
如果你只需要使用基本的redis配置,那么使用如下配置类即可,springboot会自动扫描redis的基本配置,但是有一项要注意那就是password,如果你在配置文件中设置了password,那么就必须在配置类中手工注入JedisConnectionFactory中,否则会在启动过程中报NOAUTHAuthenticationrequired.;:
@Configuration @EnableCaching publicclassRedisConfigextendsCachingConfigurerSupport{ @Bean publicKeyGeneratorkeyGenerator(){ returnnewKeyGenerator(){ publicObjectgenerate(Objecttarget,Methodmethod,Object...params){ StringBuildersb=newStringBuilder(); sb.append(target.getClass().getName()); sb.append(method.getName()); for(Objectobj:params){ sb.append(obj.toString()); } returnsb.toString(); } }; } @SuppressWarnings("rawtypes") @Bean publicCacheManagercacheManager(RedisTemplateredisTemplate){ RedisCacheManagerrcm=newRedisCacheManager(redisTemplate); //设置缓存过期时间 //rcm.setDefaultExpiration(60);//秒 returnrcm; } @Bean publicRedisTemplateredisTemplate(RedisConnectionFactoryfactory){ StringRedisTemplatetemplate=newStringRedisTemplate(factory); @SuppressWarnings({"rawtypes","unchecked"}) Jackson2JsonRedisSerializerjackson2JsonRedisSerializer=newJackson2JsonRedisSerializer(Object.class); ObjectMapperom=newObjectMapper(); om.setVisibility(PropertyAccessor.ALL,JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); template.setValueSerializer(jackson2JsonRedisSerializer); template.afterPropertiesSet(); JedisConnectionFactoryjc=(JedisConnectionFactory)factory; System.out.println(jc.getHostName()); returntemplate; } }
如果你还配置了如连接池之类的参数,在上边配置类中加入:
@Bean publicJedisConnectionFactoryredisConnectionFactory(){ JedisConnectionFactoryfactory=newJedisConnectionFactory(); factory.setHostName(host); factory.setPort(port); factory.setPassword(password); factory.setTimeout(timeout);//设置连接超时时间 returnfactory; }
使用factory进行set你所配置的值即可。
附带解释一点就是在配置类中注入配置文件中的属性方案有多种,如需了解可参考下文:
点击打开链接
以上所述是小编给大家介绍的详解springbootstarterredis配置文件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!