springBoot 2.3 整合redis

1.这里使用maven 管理jar包,所以pom中引入依赖,此处注意 spring-boot-starter-data-redis 引用的大版本号应和所依赖的spring-boot-starter-parent 大版本号相同,即:spring-boot-starter-parent 版本为 2.3.x ,spring-boot-starter-data-redis 版本号也为 2.3.x 否则会引出类缺失异常
     
    
        org.springframework.boot
        spring-boot-starter-data-redis
    

    
    
        org.apache.commons
        commons-pool2
    
2.然后在application.yml文件里配置redis
spring:
  redis:
    # Redis数据库索引(默认为0)
    database: 0
    #数据库ip地址
    host: 127.0.0.1
    #数据库端口 默认为6379
    port: 6379
    #数据库密码
    password: 123456
    lettuce:
      pool:
        #连接池最大连接数默认8 负数表示无限制
        max-active: 8
        #连接池最大阻塞等待时间 默认值-1  负数表示无限制
        max-wait: -1
        #连接池最大空闲连接 默认8
        max-idle: 8
        #连接池最小空闲连接 默认0
        min-idle: 0

这里我是用lettuce客户端,未使用Jedis 二者 区别如下:
1、Jedis 是直连模式,在多个线程间共享一个 Jedis 实例时是线程不安全的,
每个线程都去拿自己的 Jedis 实例,当连接数量增多时,物理连接成本就较高了
2、Lettuce的连接是基于Netty的,连接实例可以在多个线程间共享,如果你不知道Netty也没事,大致意思就是一个多线程的应用可以使用同一个连接实例,而不用担心并发线程的数量。通过异步的方式可以让我们更好地利用系统资源。
附注:若想详细了解Lettuce 可以看这篇文章 https://www.cnblogs.com/throwable/p/11601538.html

3.配置RedisTemplate序列化, SpringBoot集成Redis后,使用redis存储Object,redis默认的序列化器在写入key或value时会以二进制的形式存储,不方便我们日常观察他的key和value,我们自定义一个RedisTemplate,设置序列化器,这样我们可以很方便的操作实例对象,默认情况下RedisTemplate模板只能支持字符串。
@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {
        RedisTemplate template = new RedisTemplate<>();
        template.setConnectionFactory(lettuceConnectionFactory);
        MyRedisSerializer  myRedisSerializer=new MyRedisSerializer();
        //key序列化方式
        template.setKeySerializer(new StringRedisSerializer());
        //value序列化
        template.setValueSerializer(new StringRedisSerializer());
        //value hashmap序列化
        template.setHashValueSerializer(new StringRedisSerializer());
        return template;
    }

}

你可能感兴趣的:(springBoot 2.3 整合redis)