SpringBoot整合Redis

概述

SpringBoot整合Redis通过Spring-Data Redis
在这里插入图片描述

说明
在SpringBoot2.x之后,原来使用的Jedis被替换为lettuce。

  1. jedis:采用的直连,多个线程操作的话,是不安全的,如果想要避免不安全的,使用jedis pool连接池!更像BIO模式
  2. lettuce:采用netty,实例可以在多个线程中进行共享,不存在线程不安全的情况!可以减少线程数据了,更像NIO模式。
    在这里插入图片描述

redis配置文件源码分析

  1. springboot所有的配置类,都有一个自动配置类
  2. 自动配置类都会绑定一个properties配置文件

redis的自动配置类和配置属性类

  1. redis的自动配置类如何查找
    先找到springboot通用配置类jar包下的spring.factories文件,该文件里是springboot集成的所有自动配置类
    在这里插入图片描述
    我们找到redis的自动配置类
    org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration
    在这里插入图片描述
    redis的配置文件
    在这里插入图片描述
    在这里插入图片描述

配置源码分析

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

    @Bean
    @ConditionalOnMissingBean(
        name = {"redisTemplate"}
    ) // 我们可以自定义一个redisTemplate来替换这个默认的redisTemplate
    @ConditionalOnSingleCandidate(RedisConnectionFactory.class)
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        // 默认的RedisTempalte没有过多的设置,redis对象都是需要序列化的,因此自定义RedisTmeplate需要添加序列化功能。
        // RedisTemplat的两个泛型参数都是Object,Object的类型,之后使用需要强转为<String,Object>
        RedisTemplate<Object, Object> template = new RedisTemplate();
        template.setConnectionFactory(redisConnectionFactory);
        return template;
    }

    @Bean
    @ConditionalOnMissingBean // 由于String是redis中最常使用的类型,所有说单独提出来一个Bean
    @ConditionalOnSingleCandidate(RedisConnectionFactory.class)
    public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
        StringRedisTemplate template = new StringRedisTemplate();
        template.setConnectionFactory(redisConnectionFactory);
        return template;
    }
}

说明
@Bean定义的bean,方法名就是bean id,默认情况下方法名就是bean name。

redis配置项配置

  1. 所有可用的配置都在redis的配置项类中,里面定义了配置项的前缀和那些配置项可配置。
    在这里插入图片描述

redis测试

  1. 导入依赖
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
  1. 连接
    配置连接
# 我们只需要修改自定义的就可以了,其他的都是默认的,可以不配置
spring.redis.password=123456
  1. 测试
  • 测试类
@SpringBootTest
class DemoApplicationTests {

    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    void contextLoads() {
        // opsForValue 操作字符串,类似String
        redisTemplate.opsForValue().set("key1", "hello");
        System.out.println(redisTemplate.opsForValue().get("key1"));
    }

}

redis 模板引擎

  1. 对象存储必须序列化或者对象字符串化,否则异常
    在这里插入图片描述
    1、直接存储对象抛出对象无法序列化异常,因为默认使用的jdk序列化,如果不实现serialiable就无法jdk序列化
    在这里插入图片描述
  2. 对象实现序列化后,可以正常保存
    在这里插入图片描述
  3. 可以自己定义一个redisTemplate,使用其他的序列化方式
    在这里插入图片描述
  4. 自定义一个RedisUtils来封装相关的redis API,方法使用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

融极

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值