这里有新鲜出炉的 Redis 官方指南,程序狗速度看过来!
Redis Key-Value 数据库
Redis 是一个开源的使用 ANSI C 语言编写,支持网络,可基于内存亦可持久化的日志型,Key-Value 数据库,并提供多种语言的 API.
spring-boot-starter-Redis 主要是通过配置 RedisConnectionFactory 中的相关参数去实现连接 redis service.下面通过本文给大家介绍在 spring boot 的配置文件中 redis 的基本配置,需要的的朋友参考下
spring-boot-starter-Redis 主要是通过配置 RedisConnectionFactory 中的相关参数去实现连接 redis service.
RedisConnectionFactory 是一个接口,有如下 4 个具体的实现类,我们通常使用的是 JedisConnectionFactory.
在 spring boot 的配置文件中 redis 的基本配置如下:
上边这 4 项是在 JedisConnectionFactory 类中的基本配置项,里边其实还包含了一些比如连接池,集群,主从,哨兵等的配置,这里先简单介绍下连接池(JedisPoolConfig),需要了解其它配置了可以看下源码.GenericObjectPoolConfig 是 JedisPoolConfig 的父类,主要提供了 maxTotal,maxIdle,maxIdle 共三个参数的配置,其中还设置了默认的参数.
# Redis 服务器地址
spring.redis.host=192.168.0.58
# Redis 服务器连接端口
spring.redis.port=6379
# Redis 服务器连接密码(默认为空,如果 redis 服务端配置文件开启了 requirepass 密码,此处就应该填写相应的配置密码)
spring.redis.password=
# 连接超时时间(毫秒)
spring.redis.timeout=0
配置文件配置好后,还需要建立一个 redis 的配置类,主要用来配置 key 和 value 的序列化及加载配置文件中的相关参数
# 连接池最大连接数(使用负值表示没有限制,对应 maxTotal)
spring.redis.pool.max-active=8
# 连接池中的最大空闲连接
spring.redis.pool.max-idle=8
# 连接池中的最小空闲连接
spring.redis.pool.min-idle=0
如果你只需要使用基本的 redis 配置,那么使用如下配置类即可,spring boot 会自动扫描 redis 的基本配置,但是有一项要注意那就是 password,如果你在配置文件中设置了 password,那么就必须在配置类中手工注入 JedisConnectionFactory 中,否则会在启动过程中报 NOAUTH Authentication required.;:
如果你还配置了如连接池之类的参数,在上边配置类中加入:
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport{
@Bean
public KeyGenerator keyGenerator() {return new KeyGenerator() {
public Object generate(Object target, Method method, Object... params) {
StringBuilder sb = new StringBuilder();
sb.append(target.getClass().getName());
sb.append(method.getName());
for (Object obj : params) {
sb.append(obj.toString());
}
return sb.toString();
}
};
}
@SuppressWarnings("rawtypes")
@Bean
public CacheManager cacheManager(RedisTemplate redisTemplate) {
RedisCacheManager rcm = new RedisCacheManager(redisTemplate);
// 设置缓存过期时间
//rcm.setDefaultExpiration(60);// 秒
return rcm;
}
@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
StringRedisTemplate template = new StringRedisTemplate(factory);
@SuppressWarnings({ "rawtypes", "unchecked" })
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
template.setValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
JedisConnectionFactory jc = (JedisConnectionFactory) factory;
System.out.println(jc.getHostName());
return template;
}
}
使用 factory 进行 set 你所配置的值即可.
@Bean
public JedisConnectionFactory redisConnectionFactory() {
JedisConnectionFactory factory = new JedisConnectionFactory();
factory.setHostName(host);
factory.setPort(port);
factory.setPassword(password);
factory.setTimeout(timeout); // 设置连接超时时间
return factory;
}
附带解释一点就是在配置类中注入配置文件中的属性方案有多种,如需了解可参考下文:
点击打开链接
以上所述是小编给大家介绍的详解 spring boot starter redis 配置文件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的.在此也非常感谢大家对 PHPERZ 网站的支持!
来源: http://www.phperz.com/article/18/0201/356548.html