1.2 依赖包含信息

依赖引入后,可以看到maven projects中相关的依赖包信息,其中包括了spring-data-redis和lettuce-core两个依赖包。

  • spring-data-redis包含了Spring对data处理的一些公共包
  • lettuce-core包是starter-data-redis中对lettuce的默认支持

spring boot 引入RedissonClient为null springboot怎么用redis_redis

1.3 Jedis客户端依赖

如果需要使用Jedis来操作Redis,只需要将lettuce的依赖替换为Jedis即可。

redis.clients

jedis

复制代码

2. Redis配置


Spring Boot在org.springframework.boot.autoconfigure.data.redis包中为redis提供了自动配置。其中定义有:

  • RedisAutoConfiguration自动配置类
  • RedisPropertiesRedis属性信息读取类
  • RedisConnectionConfiguration连接配置基类
  • JedisConnectionConfiguration,Jedis连接配置类
  • LettuceConnectionConfiguration,Lettuce连接配置类

2.1 配置文件中定义Redis信息

有了RedisProperties,并于Spring Boot配置文件中定义Redis相关属性后,就会在项目启动时会注入到Redis中去。Redis可以自定义的配置项内容有:

Redis配置项,以spring.redis为前缀

数据库索引(默认为0)

spring.redis.database=0

服务器地址

spring.redis.host=127.0.0.1

端口

spring.redis.port=6379

密码(默认为空,为空时不设置该属性)

spring.redis.password=redis

超时时间(毫秒)

spring.redis.timeout=30000


建议使用lettuce 可以换成jedis,spring默认集成lettuce

spring.redis.client-type=lettuce


如果使用jedis客户端,则下面定义的内容需要将lettuce换成jedis

连接池最大连接数(使用负值表示没有限制)

spring.redis.lettuce.pool.max-active=10

最大阻塞等待时间(使用负值表示没有限制)

spring.redis.lettuce.pool.max-wait=-2

最大空闲连接数

spring.redis.lettuce.pool.max-idle=10

最小空闲连接

spring.redis.lettuce.pool.min-idle=0

复制代码

2.2 自定义Redis配置类

前面说到spring中为redis定义了专门的RedisAutoConfiguration自动配置类,其中定义创建泛型为<Object, Object>的RedisTemplate对象,为了允许自定义配置Bean,自动配置类使用@ConditionalOnMissingBean注解,表示当其他地方定义一个RedisTemplate的Bean时,会替代自动配置中的结果。

@Configuration(
proxyBeanMethods = false
)
@ConditionalOnClass({RedisOperations.class})
@EnableConfigurationProperties({RedisProperties.class})
@Import({LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class})
public class RedisAutoConfiguration {
public RedisAutoConfiguration() {
}

@Bean
@ConditionalOnMissingBean(
name = {“redisTemplate”}
)
@ConditionalOnSingleCandidate(RedisConnectionFactory.class)
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<Object, Object> template = new RedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
return template;
}

@Bean
@ConditionalOnMissingBean
@ConditionalOnSingleCandidate(RedisConnectionFactory.class)
public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
return new StringRedisTemplate(redisConnectionFactory);
}
}


为了使用操作更方便,我们定义一个<String, Object>泛型的RedtTemplate,这样对于数据的存放和读取都更合适。

  • RedisTemplate序列化默认是采用JDK的序列化策略,可以在配置类中设置为其他策略
//自定义RedisConfig
@Configuration
public class RedisConfig {

@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
redisTemplate.setConnectionFactory(factory);
//采用String的序列化方式
redisTemplate.setKeySerializer(new StringRedisSerializer());
// value序列化方式采用jackson
redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());
redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());
return redisTemplate;
}
}


3. 使用Redis


3.1 SpringBoot项目使用Redis

在项目中配置Redis完成后,直接执行项目即可,运行时需要注意在配置文件中定义的Redis信息是否正确,如果Redis无法连接则项目启动报错。

  • 服务器地址要时Redis运行的服务地址,如果是本地则为127.0.0.1
  • 设置Redis启动的端口号,默认是6379
  • Redis连接密码即服务器中启动Redis服务的密码,如果没有密码则不要配置该属性,否则也会报错