1.2 依赖包含信息
依赖引入后,可以看到maven projects中相关的依赖包信息,其中包括了spring-data-redis和lettuce-core两个依赖包。
-
spring-data-redis
包含了Spring对data处理的一些公共包 -
lettuce-core
包是starter-data-redis中对lettuce的默认支持
1.3 Jedis客户端依赖
如果需要使用Jedis来操作Redis,只需要将lettuce的依赖替换为Jedis即可。
redis.clients
jedis
复制代码
2. Redis配置
Spring Boot在org.springframework.boot.autoconfigure.data.redis
包中为redis提供了自动配置。其中定义有:
-
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服务的密码,如果没有密码则不要配置该属性,否则也会报错
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)
最后
Java架构进阶面试及知识点文档笔记
这份文档共498页,其中包括Java集合,并发编程,JVM,Dubbo,Redis,Spring全家桶,MySQL,Kafka等面试解析及知识点整理
Java分布式高级面试问题解析文档
其中都是包括分布式的面试问题解析,内容有分布式消息队列,Redis缓存,分库分表,微服务架构,分布式高可用,读写分离等等!
互联网Java程序员面试必备问题解析及文档学习笔记
Java架构进阶视频解析合集
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
试问题解析,内容有**分布式消息队列,Redis缓存,分库分表,微服务架构,分布式高可用,读写分离等等!
[外链图片转存中…(img-hzI6BTux-1713311820859)]
互联网Java程序员面试必备问题解析及文档学习笔记
[外链图片转存中…(img-wj2sQCaT-1713311820860)]
Java架构进阶视频解析合集
《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!