在分布式系统开发中,Redis 凭借其高性能、多数据结构的特性,成为缓存、分布式锁、限流等场景的首选中间件。Spring Boot 作为主流的 Java 开发框架,通过自动配置机制简化了 Redis 的集成流程,让开发者无需关注复杂的底层实现,即可快速上手。本文将从环境准备、核心配置、API 实操、典型场景四个维度,详细讲解 Spring Boot 中 Redis 的使用方法,帮助开发者快速落地实战。
一、环境准备:搭建基础开发环境
1.1 安装 Redis 服务
Redis 支持 Windows、Linux、Mac 多平台部署,推荐使用 Docker 快速搭建(避免环境配置冲突):
- 拉取 Redis 镜像:
docker pull redis:6.2.6(选择稳定版) - 启动容器:
docker run -d -p 6379:6379 --name redis-demo redis --requirepass "123456"- 暴露 6379 端口,设置密码 123456,容器名称为 redis-demo
- 验证连接:使用 Redis 客户端执行
redis-cli -h localhost -p 6379 -a 123456,输入 ping 返回 PONG 即成功。
1.2 项目依赖配置
创建 Spring Boot 项目(推荐 2.7.x 版本,兼容性更优),在 pom.xml 中引入 Redis 核心依赖:
xml
org.springframework.boot
spring-boot-starter-data-redis
org.apache.commons
commons-pool2
org.springframework.boot
spring-boot-starter-test
test
spring-boot-starter-data-redis 包含 Redis 自动配置类和核心 APIcommons-pool2 提供连接池支持,优化 Redis 连接性能- 若需切换为 Jedis 客户端,排除 Lettuce 依赖并引入 Jedis 即可。
二、核心配置:自定义 Redis 连接与序列化
2.1 基础连接配置
在 application.yml 中配置 Redis 连接信息,覆盖默认自动配置:
yaml
spring:
redis:
# 连接信息
host: localhost
port: 6379
password: 123456
database: 0 # 选择第 0 个数据库(Redis 默认 16 个数据库)
# 连接池配置(Lettuce)
lettuce:
pool:
max-active: 8 # 最大连接数
max-idle: 8 # 最大空闲连接
min-idle: 2 # 最小空闲连接
max-wait: 1000ms # 连接等待超时时间
timeout: 5000ms # 命令执行超时时间
- 数据库索引
database 用于隔离不同业务数据,避免键名冲突 - 连接池参数需根据业务压力调整,避免连接泄露或资源浪费
2.2 序列化配置(关键优化)
Spring Boot 默认使用 JdkSerializationRedisSerializer 序列化对象,存在可读性差、占用空间大的问题。推荐自定义序列化配置,使用 Jackson2JsonRedisSerializer 实现 JSON 序列化:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory factory) {
RedisTemplate template = new RedisTemplate<>();
template.setConnectionFactory(factory);
// JSON 序列化配置
Jackson2JsonRedisSerializer