Spring Boot 集成 Redis

Spring-data-redis

在 Spring 中整合 Redis

jedis : 采用的直连,多个线程操作的话,是不安全的,如果想要避免不安全的,使用 jedis pool 连接池

lettuce : 采用netty,实例可以再多个线程中进行共享,不存在线程不安全的情况!可以减少线程数据了

一、配置步骤

  1. 加入 Redis 相关依赖

    properties 复制代码
    <dependency>
    	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
  2. 在 application.properties 中加入 Redis 相关配置

    properties 复制代码
    # Redis数据库索引(默认为0)
    spring.redis.database=0
    # Redis服务器地址
    spring.redis.host=192.168.0.24
    # Redis服务器连接端口
    spring.redis.port=6379
    # Redis服务器连接密码(默认为空)
    spring.redis.password=
    # 连接池最大连接数(使用负值表示没有限制)
    spring.redis.pool.max-active=200
    # 连接池最大阻塞等待时间(使用负值表示没有限制)
    spring.redis.pool.max-wait=-1
    # 连接池中的最大空闲连接
    spring.redis.pool.max-idle=10
    # 连接池中的最小空闲连接
    spring.redis.pool.min-idle=0
    # 连接超时时间(毫秒)
    spring.redis.timeout=1000

二、Spring-data-redis相关功能

(1)模板类

  • RedisTemplate key value 泛型都是object
  • StringRedisTemplate key value 泛型都是String

(2)注意

  1. 两者数据 各自存、各自取,数据互不相通

    • RedisTemplate不能取StringRedisTemplate存入的数据
    • StringRedisTemplate不能取RedisTemplate存入的数据
  2. 序列化策略不同

    • RedisTemplate采用JDK的序列化策略(JdkSerializationRedisSerializer)保存的key和value 都是是采用此策略序列化保存的

      1. 存储时,先将数据序列化为字节数组,再存入 Redis 数据库
      2. 查看 Redis 会发现,是字节数组的形式,类似乱码
      3. 读取时,会将数据当做字节数组转化为我们需要的数据,用来存储对象,但要实现 Serializable 接口
    • StringRedisTemplate采用String的序列化策略(StringRedisSerializer)保存的key和

      value都是String类型,存储和读取,都为可读的数据,采用此策略序列化保存的当存入对象时,会报错:can not cast into String

  3. 两者的关系是 StringRedisTemplate 继承 RedisTemplate

  4. 使用场景

    • 当你的 redis 数据库里面本来存的是字符串数据或者要存取的数据就是字符串类型数据的时候,那么就使用StringRedisTemplate
    • 如果数据是复杂的对象类型,而取出的时候又不想做任何的数据转换,直接从Redis里面取出一个对 象,那么使用RedisTemplate是更好的选择
  5. 五大数据类型

    • redisTemplate.opsForValue();//操作字符串
    • redisTemplate.opsForList();//操作List
    • redisTemplate.opsForSet();//操作Set
    • redisTemplate.opsForZSet();//操作ZSet
    • redisTemplate.opsForHash();//操作Hash

(3)序列化策略

改变序列化策略

默认序列化方式存储到redis的数据人工不可读

不同策略序列化的过程有性能高低的

spring-data-redis 提供如下几种序列化策略

java 复制代码
GenericToStringSerializer: //可以将任何对象泛化为字符串并序列化

Jackson2JsonRedisSerializer: //跟JacksonJsonRedisSerializer实际上是一样的

JacksonJsonRedisSerializer: //序列化object对象为json字符串

JdkSerializationRedisSerializer: //序列化java对象

StringRedisSerializer: //简单的字符串序列化
相关推荐
J不A秃V头A6 分钟前
Spring Boot开发编译后读取不到@spring.profiles.active@的问题
spring boot
水w1 小时前
【项目实践】SpringBoot Nacos配置管理 map数据
java·服务器·开发语言·spring boot·nacos
@菜鸟进阶记@1 小时前
SpringBoot核心:自动配置
java·spring boot·后端
汤姆yu1 小时前
基于springboot的健身俱乐部网站系统
java·spring boot·后端·健身房·俱乐部
╰つ゛木槿2 小时前
Spring Boot与Django对比:哪个更适合做为Web服务器框架?
前端·spring boot·django
Q_19284999062 小时前
基于Spring Boot的建材租赁系统
java·spring boot·后端
小蜗牛慢慢爬行3 小时前
有关异步场景的 10 大 Spring Boot 面试问题
java·开发语言·网络·spring boot·后端·spring·面试
Allen Bright3 小时前
Spring Boot 整合 RabbitMQ:手动 ACK 与 QoS 配置详解
spring boot·rabbitmq·java-rabbitmq
呆呆小雅3 小时前
C#关键字volatile
java·redis·c#
goTsHgo3 小时前
在 Spring Boot 的 MVC 框架中 路径匹配的实现 详解
spring boot·后端·mvc