Spring Boot 整合 Redis 使用教程

Redis 是一种高性能的键值存储数据库,常用于缓存、会话管理和消息队列等场景。Spring Boot 通过 Spring Data Redis 提供了简洁的整合方式。


1. 环境准备

1.1 添加依赖

pom.xml 中添加 Redis 依赖(Spring Boot 3.x):

xml 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- 若使用 Jedis 客户端 -->
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
</dependency>

2. 配置 Redis 连接

application.properties 中配置 Redis 连接信息:

properties 复制代码
spring.data.redis.host=localhost
spring.data.redis.port=6379
spring.data.redis.password=  # 若无密码则留空
spring.data.redis.database=0

3. 使用 RedisTemplate 操作 Redis

3.1 注入 RedisTemplate

Spring Boot 自动配置了 RedisTemplate,可直接注入使用:

java 复制代码
@Autowired
private RedisTemplate<String, Object> redisTemplate;

3.2 基础操作示例

java 复制代码
// 存储字符串
redisTemplate.opsForValue().set("name", "Alice");

// 获取字符串
String name = (String) redisTemplate.opsForValue().get("name");
System.out.println("Name: " + name); // 输出: Alice

// 设置过期时间(30秒)
redisTemplate.expire("name", 30, TimeUnit.SECONDS);

// 删除键
redisTemplate.delete("name");

3.3 存储对象(JSON序列化)

默认序列化可能存在问题,建议配置自定义序列化(在配置类中添加):

java 复制代码
@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(factory);
        template.setKeySerializer(new StringRedisSerializer());
        template.setValueSerializer(new GenericJackson2JsonRedisSerializer());
        return template;
    }
}

存储自定义对象:

java 复制代码
User user = new User("Bob", 25);
redisTemplate.opsForValue().set("user:1", user);
User cachedUser = (User) redisTemplate.opsForValue().get("user:1");

4. 使用 Spring Cache 注解

4.1 启用缓存

在启动类添加 @EnableCaching

java 复制代码
@SpringBootApplication
@EnableCaching
public class Application { ... }

4.2 缓存方法结果

java 复制代码
@Service
public class UserService {
    @Cacheable(value = "userCache", key = "#id")
    public User getUserById(String id) {
        // 模拟数据库查询
        return new User(id, "CacheUser", 30);
    }

    @CacheEvict(value = "userCache", key = "#id")
    public void deleteUser(String id) {
        // 删除数据库记录
    }
}

5. 测试 Redis 连接

创建一个简单的测试类:

java 复制代码
@Component
public class RedisTest implements CommandLineRunner {
    @Autowired
    private RedisTemplate<String, String> redisTemplate;

    @Override
    public void run(String... args) {
        redisTemplate.opsForValue().set("testKey", "Hello Redis!");
        String value = redisTemplate.opsForValue().get("testKey");
        System.out.println("Redis测试值: " + value); // 输出: Hello Redis!
    }
}

总结

通过以上步骤即可在 Spring Boot 中快速使用 Redis。关键点:

  1. 配置 Redis 连接信息
  2. 使用 RedisTemplate 进行 CRUD 操作
  3. 通过 @Cacheable 实现声明式缓存

确保本地已启动 Redis 服务(可通过 redis-server 命令启动)。完整代码可参考 Spring Data Redis 官方文档


希望本教程能帮助您快速上手 Redis 整合!如有问题欢迎在评论区留言。

相关推荐
YOU OU2 小时前
Redis基础常识与命令
数据库·redis·缓存
腻害兔3 小时前
【若依项目-产品经理视角】深度拆解 RuoYi-Vue-Pro 商城模块:从商品管理到交易引擎,50 张表撑起一整套电商系统
java·大数据·vue.js·产品经理·ai编程
码智社4 小时前
AES加密原理详解及Java实现加解密实战
java·开发语言
萧瑟余晖5 小时前
JDK 26 新特性详解
java·开发语言
Database_Cool_5 小时前
OLTP 和 OLAP 区别详解:分析型数据库和事务型数据库怎么选(附阿里云 AnalyticDB MySQL 选型指南)
数据库·mysql·阿里云
马优晨5 小时前
Freemarker 完整讲解(后端 Java 模板引擎)
java·开发语言·freemarker·freemarker 完整讲解·freemarker模板引擎
Database_Cool_6 小时前
单机 MySQL 迁移到分布式数据库方便吗?阿里云 PolarDB-X 100% MySQL 协议兼容零改造平滑迁移
数据库·分布式·mysql
姜太小白6 小时前
【MySQL】 索引优化实战:解决 WHERE 等值 + IS NULL 查询,TEXT 字段报错 1167 的完整指南
数据库·mysql
吳所畏惧7 小时前
宝塔面板Redis密码修改指南:SSH命令修改 vs 面板UI界面修改,哪个更靠谱?
运维·服务器·数据库·redis·缓存·ssh
赵丙双8 小时前
Redis 概率相关的数据类型
redis