Spring Boot 中使用 Redis

前言

Spring Boot 中使用 Redis,具体有以下几个步骤:

  1. 添加依赖
  2. 编辑配置文件
  3. 编辑配置类

1. 添加 Redis 客户端的 Maven 依赖


xml 复制代码
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

脚本很简单,但是有 2 个问题,需要我们探讨一下

  • 什么是Redis客户端
  • 什么是Spring Boot Starter

Spring Boot 项目中使用 Redis,需要使用对应的 Redis客户端

Redis客户端

能够与 Redis 服务器进行通信并执行数据操作的程序或工具 ,其核心作用是作为用户与 Redis 服务之间的交互接口。

常见的Redis 客户端 Java 库有:JedisLettuce

从性能、资源损耗等多个对比维度,来说,Lettuce会更有优势

spring-boot-starter-data-redis 默认的Redis客户端工具就是Lettuce

本文也是使用Lettuce作为Redis 客户端

那么,什么又是Spring Boot Starter呢?

它的翻译是:Spring Boot 场景启动器

作用是把当前场景要用的jar包都引入进来,简化依赖配置

命名格式

官方格式通常为:spring-boot-starter-*

第三方格式:*-spring-boot-starter


比如前面添加的spring-boot-starter-data-redis,我们就可以得知,它是Spring官方提供的一个场景启动器
每一个starter都有一个基础依赖:spring-boot-starter

2. 编辑 yaml 配置文件


yaml 复制代码
spring:
  redis:
    host: 192.168.0.1
    port: 6379
    password: 123321
    lettuce:
      pool:
        max-active: 10  #最大连接
        max-idle: 10   #最大空闲连接
        min-idle: 1   #最小空闲连接
        max-wait: 1s #连接等待时间
        time-between-eviction-runs: 30s # 定期检测空闲连接

主要是配置Redis连接信息,以及lecttuce连接池信息

Redis 连接池

一种 管理 Redis 连接的机制,用于避免频繁创建和销毁连接带来的性能开销,提升系统效率和资源利用率

可以视具体情况考虑是否使用连接池,以及调整连接池参数

3. 编辑配置类


java 复制代码
@Configuration
@Slf4j
public class RedisConfiguration {

    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
        log.info("开始创建redis模板对象...");
        RedisTemplate redisTemplate = new RedisTemplate();
        // 设置redis的连接工厂对象
        // 在这步可以切换 redis 客户端,前提是定义好 redisConnectionFactory
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        
        // 设置redis key的序列化器
        redisTemplate.setKeySerializer(RedisSerializer.string());
        redisTemplate.setHashKeySerializer(RedisSerializer.string());
        // 设置redis value的序列化器
        // 自动添加 `@class` 类型信息,避免反序列化失败
        // 特征:序列化后有 class 信息
        redisTemplate.setValueSerializer(RedisSerializer.json());
        redisTemplate.setHashValueSerializer(RedisSerializer.json());
        return redisTemplate;
    }
}

我们着重关注对于Rdis序列化器改造,即

java 复制代码
redisTemplate.setKeySerializer(RedisSerializer.string());
redisTemplate.setHashKeySerializer(RedisSerializer.string());

redisTemplate.setValueSerializer(RedisSerializer.json());
redisTemplate.setHashValueSerializer(RedisSerializer.json());

注意 以上代码属于Spring Data Redis 2.2+推荐写法,如果你的Spring Data Redis版本较低,可以使用如下代替

java 复制代码
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setHashKeySerializer(new StringRedisSerializer());

redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
redisTemplate.setHashValueSerializer(new GenericJackson2JsonRedisSerializer());

为什么我们要自定义序列化器呢?

默认的序列化器,在redis中存储的数据是这样的

缺点很明显:可读性差,内存占用较大

自定义序列化器便是为了解决这些问题

当然,也有其他方式进行自定义序列化,比如Jackson2JsonRedisSerializerFastJson等方式,在此不做展开

测试


自此,我们便可以通过redisTemplate提供的相关方法进行使用了

java 复制代码
 @SpringBootTest
class RedisStringTests {

    @Autowired
    private RedisTemplate redisTemplate;

    @Test
    void testString() {
        // 写入一条String数据
        redisTemplate.opsForValue().set("name", "Tom");
        // 获取string数据
        Object name = stringRedisTemplate.opsForValue().get("name");
        System.out.println("name = " + name);
    }
}
相关推荐
迷茫的大专生1 小时前
高可用总结
redis·mysql·nginx·高可用
user_admin_god3 小时前
第 01 篇:OpenAI 兼容 API 初探 —— 用 curl 跑通第一次对话
java·人工智能·spring boot·语言模型·devops
辉灰笔记3 小时前
Redis6.0.10升级迁移至Redis7.4.6(修复CVE‑2025‑49844,业务无需重启)
redis·redis7·漏洞修复·数据库迁移·redis平滑升级·cve-2025-49844
小辰爱喝汤4 小时前
基于智能定价的 校园二手交易平台-计算机毕业设计
spring boot·毕业设计·课程设计
sdm0704275 小时前
Linux 中安装 Redis 5
redis
RuoyiOffice6 小时前
SpringBoot3+Vue3 库存盘点:账面和实盘对不上,差异单怎么走审批再调账
spring boot·vue3·erp·spring boot 3·库存盘点·盘盈盘亏
草莓熊Lotso6 小时前
【Redis 进阶】主从复制深度解析:从配置落地到 PSYNC 同步原理
linux·开发语言·网络·数据库·redis·缓存·php
行者-全栈开发7 小时前
Spring Boot 接入 MaxKey 单点登录:6 个内部系统,一次登录全通行
spring boot·iam·oauth2·统一认证·oidc·sso 单点登录·maxkey
user_admin_god8 小时前
第 09 篇:实践一 —— 文本摘要(Map-Reduce 分块)
java·人工智能·spring boot·语言模型
vx_BS813308 小时前
【项目编号:project49759】Spring Boot 宠物综合服务平台:商城、预约、咨询、活动与健康档案的一体化实现
java·spring boot·eclipse·tomcat·intellij-idea