SpringBoot中集成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服务的密码,如果没有密码则不要配置该属性,否则也会报错

项目成功启动后,为了验证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中了。

image-20211127230828473

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基础-中级-高级

image

  • 第二部分:开源框架(SSM:Spring+SpringMVC+MyBatis)

image

  • 第三部分:性能调优(JVM+MySQL+Tomcat)

image

  • 第四部分:分布式(限流:ZK+Nginx;缓存:Redis+MongoDB+Memcached;通讯:MQ+kafka)

image

  • 第五部分:微服务(SpringBoot+SpringCloud+Dubbo)

image

  • 第六部分:其他:并发编程+设计模式+数据结构与算法+网络

image

进阶学习笔记pdf

  • Java架构进阶之架构筑基篇(Java基础+并发编程+JVM+MySQL+Tomcat+网络+数据结构与算法

image

  • Java架构进阶之开源框架篇(设计模式+Spring+SpringMVC+MyBatis

image

image

image

  • Java架构进阶之分布式架构篇 (限流(ZK/Nginx)+缓存(Redis/MongoDB/Memcached)+通讯(MQ/kafka)

image

image

image

  • Java架构进阶之微服务架构篇(RPC+SpringBoot+SpringCloud+Dubbo+K8s)

image

image

(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)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值