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: //简单的字符串序列化
相关推荐
大模型丫丫1 小时前
如何提升单体 Spring Boot 应用的并发数?
java·spring boot·后端
RuoyiOffice2 小时前
SpringBoot3+Vue3 最推荐的开源 OA 系统 2026:流程驱动、资源闭环、多端互通
spring boot·vue3·flowable·oa·协同办公·spring boot 3·开源oa
吃饱了得干活2 小时前
Redis 从单机到集群:持久化、主从复制、哨兵与集群完全指南
redis·后端
计算机毕设定制辅导-无忧学长2 小时前
基于Spring Boot的玄幻小说个性化推荐平台设计与实现
java·vue.js·spring boot·后端·mysql·推荐算法
Harry Lei2 小时前
长期记忆系统的设计与实现
spring boot·postgresql·embedding
星星落进兜里3 小时前
Redis 内存缓存,面试补充
数据库·redis·面试
小程故事多_803 小时前
企业AI对话记忆架构实战,告别单一Redis存储,搭建长短效协同的记忆体系
人工智能·redis·架构
卓怡学长4 小时前
w156一周穿搭App的设计与实现
java·spring boot·spring·maven·intellij-idea
步行cgn5 小时前
Spring Boot 绑定简单 Bean 详解
java·spring boot·后端
盟道科技6 小时前
Redis+Lua 实现滑动窗口限流:从固定窗口踩坑到生产可用的完整方案
redis·junit·lua