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: //简单的字符串序列化
相关推荐
NiNg_1_23418 分钟前
SpringBoot整合SpringSecurity实现密码加密解密、登录认证退出功能
java·spring boot·后端
种树人2024081921 分钟前
如何在 Spring Boot 中启用定时任务
spring boot
苹果醋33 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
Wx-bishekaifayuan3 小时前
django电商易购系统-计算机设计毕业源码61059
java·spring boot·spring·spring cloud·django·sqlite·guava
customer084 小时前
【开源免费】基于SpringBoot+Vue.JS周边产品销售网站(JAVA毕业设计)
java·vue.js·spring boot·后端·spring cloud·java-ee·开源
Yaml45 小时前
智能化健身房管理:Spring Boot与Vue的创新解决方案
前端·spring boot·后端·mysql·vue·健身房管理
LuckyLay5 小时前
Spring学习笔记_27——@EnableLoadTimeWeaving
java·spring boot·spring
水月梦镜花5 小时前
redis:list列表命令和内部编码
数据库·redis·list
佳佳_6 小时前
Spring Boot 应用启动时打印配置类信息
spring boot·后端
程序媛小果6 小时前
基于java+SpringBoot+Vue的宠物咖啡馆平台设计与实现
java·vue.js·spring boot