-
RedisAutoConfiguration
自动配置类 -
RedisProperties
Redis属性信息读取类 -
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服务的密码,如果没有密码则不要配置该属性,否则也会报错
项目成功启动后,为了验证Redis是否可用,可以在单元测试中使用redisTemplate来存储和获取数据到redis中。
@Autowired
private RedisTemplate redisTemplate;
@Test
public void testRedis(){
ValueOperations<String, String> operations = redisTemplate.opsForValue();
operations.set(“name”, “tom”);
System.out.println(operations.get(“name”));
}
复制代码
执行单元测试后输出存储的tom值,说明数据已经存储在Redis中了。
3.2 Windows下安装Redis
如果还没有安装Redis服务,或者想要在Redis服务中查看存入的数据,可以参照windows本地Redis服务的创建方法。
Redis官方并不建议在Windows下使用Redis,因此没有提供windows版本,而微软官方却为windows用户提供了可用的redis应用。
windows下Redis版本 ,下载时可以选择安装包或免安装版本。
下载安装完成后得到Redis目录,可以使用其中的redis-server和redis-cli程序来运行redis
-
redis-server作为服务端,启动后开启命令行来运行redis服务
-
redis-cli作为客户端,可以执行redis相关命令查看和存储数据
复习的面试资料
这些面试全部出自大厂面试真题和面试合集当中,小编已经为大家整理完毕(PDF版)
- 第一部分:Java基础-中级-高级
- 第二部分:开源框架(SSM:Spring+SpringMVC+MyBatis)
- 第三部分:性能调优(JVM+MySQL+Tomcat)
- 第四部分:分布式(限流:ZK+Nginx;缓存:Redis+MongoDB+Memcached;通讯:MQ+kafka)
- 第五部分:微服务(SpringBoot+SpringCloud+Dubbo)
- 第六部分:其他:并发编程+设计模式+数据结构与算法+网络
进阶学习笔记pdf
- Java架构进阶之架构筑基篇(Java基础+并发编程+JVM+MySQL+Tomcat+网络+数据结构与算法)
- Java架构进阶之开源框架篇(设计模式+Spring+SpringMVC+MyBatis)
- Java架构进阶之分布式架构篇 (限流(ZK/Nginx)+缓存(Redis/MongoDB/Memcached)+通讯(MQ/kafka))
- Java架构进阶之微服务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)
(ZK/Nginx)+缓存(Redis/MongoDB/Memcached)+通讯(MQ/kafka))
[外链图片转存中…(img-kbN1ibsF-1718719702611)]
[外链图片转存中…(img-6GYWsvtH-1718719702611)]
[外链图片转存中…(img-QrXge5RC-1718719702612)]
- Java架构进阶之微服务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)
[外链图片转存中…(img-gu0LBo08-1718719702612)]
[外链图片转存中…(img-LQcKLapW-1718719702612)]