教你一步步搞定Redis配置类,手写代码不再难理解
- 问答
- 2026-01-15 14:36:51
- 3
(引用来源:基于常见的Spring Boot项目集成Redis的实践)
今天咱们就来手把手地写一个Redis的配置类,别怕,咱们不用那些听不懂的专业词,就用大白话,一步步来,保证你写完就能懂。
第一步:先拉个帮手——引入依赖
你想用Redis,总得先把工具包拿到手对吧?这就像你想做饭,得先有米和锅,在Spring Boot项目里,这个“米和锅”就是一个叫spring-boot-starter-data-redis的依赖,你只需要在你项目的pom.xml文件里(如果用的是Maven的话),加上下面这几行代码:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
加完之后,你的项目就拥有了操作Redis的基本能力,这一步很简单,就是告诉项目:“哎,我接下来要用Redis了,你把相关的工具给我准备好。”
第二步:告诉程序Redis在哪儿——配置连接信息
工具有了,你得知道去哪个地方用这个工具吧?Redis服务器可能在你本地,也可能在另一台电脑上,所以我们需要在application.properties或者application.yml文件里,写上Redis的“家庭住址”和“门牌号”。
你的Redis就在自己电脑上,端口是默认的6379,没有密码,那就可以这样写:
# 在application.properties中 spring.data.redis.host=localhost spring.data.redis.port=6379 # 如果没密码,下面这行就不用写 # spring.data.redis.password=
这样配置之后,程序就知道:“哦,我要找的Redis就在localhost这个地方的6379端口。”
第三步:核心步骤——亲手编写配置类

前面两步是准备工作,现在才是重头戏,我们要创建一个Java类,专门用来配置和定制Redis的行为,这个类会像一个大管家,告诉程序具体怎么连接Redis、用什么方式序列化数据(序列化你可以简单理解成“把Java对象变成Redis能存的样子”)。
-
创建配置类:我们新建一个类,比如叫
RedisConfig,并在类上面加上@Configuration注解,这个注解是告诉Spring:“喂,我是一个配置类,我里面说的配置你得听!”import org.springframework.context.annotation.Configuration; @Configuration public class RedisConfig { // 接下来的配置都会写在这里面 } -
配置连接工厂:RedisTemplate(我们待会会讲)需要一个“连接工厂”来帮它和Redis服务器建立实际的连接,我们可以自己定义一个工厂,来更精细地控制连接参数,这里我们使用
Lettuce作为客户端(它是一个高效好用的Redis客户端)。@Bean public LettuceConnectionFactory redisConnectionFactory() { // 这里其实可以设置更多参数,比如超时时间、连接池等 // 但因为我们在application.properties里已经配了host和port,Spring会智能地使用那些配置 // 所以这里简单地返回一个默认的工厂实例就可以了,它会自动读取配置文件。 return new LettuceConnectionFactory(); }@Bean注解的意思是,这个方法会生产出一个对象(这里是LettuceConnectionFactory),然后把这个对象交给Spring容器来管理,以后别的地方需要用到连接工厂时,Spring就会把这个造好的直接给它。 -
配置重头戏——RedisTemplate:这是最关键的一步。
RedisTemplate是我们以后在代码里操作Redis最主要的工具,默认的Template可能不太符合我们的使用习惯,尤其是它序列化数据的方式,所以我们来自定义一个。
@Bean public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory connectionFactory) { RedisTemplate<String, Object> template = new RedisTemplate<>(); // 把我们上面配好的连接工厂设置给Template template.setConnectionFactory(connectionFactory); // 设置Key的序列化器:我们希望Key是普通的字符串,容易看懂 template.setKeySerializer(new StringRedisSerializer()); // 设置Value的序列化器:我们使用Jackson2JsonRedisSerializer,它可以把对象转换成JSON字符串存到Redis // 这样存进去的数据,不光Java程序能读,其他语言的程序甚至人眼都能看懂 Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class); template.setValueSerializer(serializer); // 对于Hash结构的数据,同样设置其Key和Value的序列化器 template.setHashKeySerializer(new StringRedisSerializer()); template.setHashValueSerializer(serializer); return template; }这里稍微解释一下为什么用JSON序列化,如果不设置,默认可能会用JDK序列化,存到Redis里的数据是一堆乱码,可读性很差,换成JSON之后,你进去用Redis桌面工具看,数据是清晰的
{"name":"张三", "age":20}这样的格式,非常直观。
第四步:试试看灵不灵——使用配置好的Template
配置类写好了,怎么用呢?在你需要操作Redis的Service类里,你可以通过@Autowired注解,把这个我们配置好的RedisTemplate“注入”进来,然后就可以随心所欲地使用了。
@Service
public class MyService {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
public void doSomething() {
// 存一个字符串
redisTemplate.opsForValue().set("myKey", "Hello, Redis!");
// 存一个对象(会自动序列化成JSON)
User user = new User("Alice", 25);
redisTemplate.opsForValue().set("user:001", user);
// 取出来
String value = (String) redisTemplate.opsForValue().get("myKey");
User cachedUser = (User) redisTemplate.opsForValue().get("user:001");
// 操作Hash
redisTemplate.opsForHash().put("userMap", "001", user);
}
}
看到没?通过我们自定义的配置类,现在操作Redis就变得非常简单和清晰了,Key是字符串,Value是变成JSON的对象,一切都符合我们的预期。
总结一下
整个流程就像搭积木:
- 引入依赖:准备工具包。
- 写配置文件:告诉工具包Redis服务器在哪儿。
- 写配置类:这是核心,像个大管家,定制
RedisTemplate的行为,特别是决定了数据以什么格式(比如JSON)存到Redis里。 - 注入使用:在业务代码里,轻松使用配置好的
RedisTemplate来存取值。
这样一步步下来,你是不是觉得手写一个Redis配置类也没那么神秘和困难了?其实就是把几个关键的部件组合在一起,告诉它们按我们喜欢的方式工作而已,希望这个一步步的讲解能让你真正搞定它!
本文由瞿欣合于2026-01-15发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:http://www.haoid.cn/wenda/81218.html
