【SpringBoot】29 核心功能 - 数据访问 - Spring Boot 2 操作 Redis 实践指南:本地安装与阿里云 Redis 对比应用
文章目录
- 前言
- 一、本地 Redis 环境搭建与使用
- 1. 安装 Redis(本地版)
- 1.1 下载与安装
- 1.2 验证安装
- 2. Spring Boot 项目配置 Redis
- 2.1 添加依赖
- 2.2 配置文件 `application.yml`
- 3. 编写代码操作 Redis
- 3.1 创建 Redis 操作类
- 3.2 控制器接口测试
- 4. 测试本地 Redis 功能
- 二、阿里云 Redis 环境接入与使用
- 1. 准备阿里云 Redis 环境
- 1.1 创建阿里云 Redis 实例
- 1.2 开通安全组规则
- 2. 修改 Spring Boot 配置
- 3. 使用阿里云 Redis 进行测试
- 3.1 增加连接异常处理(推荐)
- 4. 阿里云 Redis 操作小实验(统计功能)
- 4.1 新增控制器方法
- 4.2 测试访问次数统计
- 三、对比总结:本地 vs 阿里云 Redis
- 四、最佳实践建议
- 五、附录:常见问题排查
- 六、结语
前言
在现代 Web 应用开发中,Redis 作为高性能的内存数据库,广泛应用于缓存、会话管理、消息队列等场景。Spring Boot 2 提供了对 Redis 的良好支持,结合 spring-data-redis 可以快速实现 Redis 的集成与操作。
本文将详细介绍如何在 Spring Boot 2 中使用 Redis,分别从以下两个方面展开:
- 本地环境安装并配置 Redis
- 阿里云 Redis 服务接入与使用
我们将涵盖:环境准备、配置方式、代码示例、测试验证等内容,帮助开发者快速上手。
一、本地 Redis 环境搭建与使用
1. 安装 Redis(本地版)
1.1 下载与安装
Redis 官方网站:https://redis.io/
推荐使用 Linux 系统进行部署,以下是 Ubuntu/Debian 上的安装步骤:
# 更新包列表
sudo apt update
# 安装 Redis
sudo apt install redis-server
# 启动 Redis 服务
sudo systemctl start redis-server
# 设置开机自启
sudo systemctl enable redis-server
# 查看状态
sudo systemctl status redis-server
Windows 用户可下载 Redis for Windows 或使用 WSL。
1.2 验证安装
启动后,可通过命令行连接测试:
redis-cli ping
返回 PONG 表示成功。
2. Spring Boot 项目配置 Redis
2.1 添加依赖
在 pom.xml 中添加如下依赖:
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>
2.2 配置文件 application.yml
spring:redis:host: localhostport: 6379password: # 如果设置了密码,填写此处timeout: 5000ms
默认端口为 6379,若修改过需对应调整。
3. 编写代码操作 Redis
3.1 创建 Redis 操作类
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;@Service
public class RedisService {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;// 存储数据public void set(String key, Object value) {redisTemplate.opsForValue().set(key, value);}// 获取数据public Object get(String key) {return redisTemplate.opsForValue().get(key);}// 删除数据public void delete(String key) {redisTemplate.delete(key);}// 判断键是否存在public boolean exists(String key) {return redisTemplate.hasKey(key);}
}
3.2 控制器接口测试
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;@RestController
@RequestMapping("/redis")
public class RedisController {@Autowiredprivate RedisService redisService;@PostMapping("/set")public String setValue(@RequestParam String key, @RequestParam String value) {redisService.set(key, value);return "Success";}@GetMapping("/get")public Object getValue(@RequestParam String key) {return redisService.get(key);}@DeleteMapping("/delete")public String deleteValue(@RequestParam String key) {redisService.delete(key);return "Deleted";}
}
4. 测试本地 Redis 功能
启动 Spring Boot 应用后,通过 Postman 或 curl 调用:
# 设置值
curl -X POST "http://localhost:8080/redis/set?key=test&value=HelloRedis"
# 获取值
curl "http://localhost:8080/redis/get?key=test"
# 输出: HelloRedis
# 删除
curl -X DELETE "http://localhost:8080/redis/delete?key=test"
也可以直接使用 redis-cli 查看数据:
redis-cli get test
二、阿里云 Redis 环境接入与使用
1. 准备阿里云 Redis 环境
1.1 创建阿里云 Redis 实例
登录 阿里云控制台 → 进入 云数据库 Redis 版 → 创建实例。
选择:
- 地域(如:华东1)
- 实例规格(如:标准版 2GB)
- 访问方式:内网或公网(建议内网安全)
- 密码设置(务必记住)
创建完成后,获取以下信息:
- 内网地址(如:redis-xxxxx.cn-hangzhou.rds.aliyuncs.com)
- 端口(默认 6379)
- 外网地址(如有需要)
- 密码
1.2 开通安全组规则
确保你的 ECS 或本地机器能访问该 Redis 实例的端口(通常是 6379),需在安全组中放行对应端口。
2. 修改 Spring Boot 配置
将 application.yml 中的 Redis 配置改为阿里云参数:
spring:redis:host: redis-xxxxx.cn-hangzhou.rds.aliyuncs.comport: 6379password: your_password_heretimeout: 5000msdatabase: 0
注意:阿里云 Redis 不支持直接 redis-cli 连接,除非开启公网访问且配置白名单。
3. 使用阿里云 Redis 进行测试
保持原有代码不变,只需替换配置即可。
3.1 增加连接异常处理(推荐)
由于网络波动可能影响连接,建议增加重试机制或异常捕获:
@Service
public class RedisService {@Autowiredprivate RedisTemplate<String, Object> redisTemplate;public void set(String key, Object value) {try {redisTemplate.opsForValue().set(key, value);} catch (Exception e) {log.error("Redis set failed: {}", e.getMessage());throw new RuntimeException("Redis write error", e);}}public Object get(String key) {try {return redisTemplate.opsForValue().get(key);} catch (Exception e) {log.error("Redis get failed: {}", e.getMessage());return null;}}
}
4. 阿里云 Redis 操作小实验(统计功能)
我们来做一个简单的“用户访问计数”统计实验。
4.1 新增控制器方法
@GetMapping("/count")
public Map<String, Object> countUser() {String key = "user:visit:count";Long currentCount = (Long) redisService.get(key);if (currentCount == null) {currentCount = 0L;}currentCount++;redisService.set(key, currentCount);Map<String, Object> result = new HashMap<>();result.put("count", currentCount);result.put("key", key);return result;
}
4.2 测试访问次数统计
多次请求:
curl http://localhost:8080/redis/count
返回结果逐渐递增,说明 Redis 成功持久化了访问计数。
✅ 此时即使重启应用,计数也不会丢失(因为是 Redis 存储)。
三、对比总结:本地 vs 阿里云 Redis
| 项目 | 本地 Redis | 阿里云 Redis |
|---|---|---|
| 安装复杂度 | 简单(自行安装) | 简单(控制台创建) |
| 维护成本 | 高(需自行运维) | 低(托管服务) |
| 可靠性 | 一般(单机无高可用) | 高(支持主从、哨兵、集群) |
| 安全性 | 一般(需手动配置防火墙) | 高(支持 VPC、白名单、SSL) |
| 扩展性 | 差(手动扩容) | 强(一键升级) |
| 适用场景 | 开发、测试、小型项目 | 生产环境、高并发系统 |
四、最佳实践建议
- 生产环境优先使用云 Redis,避免运维负担。
- 使用
@EnableCaching+@Cacheable注解简化缓存逻辑。 - 合理设置过期时间,防止内存泄漏。
- 使用 Redisson 或 Lettuce 替代 Jedis(Spring Boot 2 默认使用 Lettuce)。
- 监控 Redis 性能指标(如内存、QPS、延迟)。
五、附录:常见问题排查
- ❌ Connection refused:检查 Redis 是否启动、端口是否开放。
- ❌ Authentication required:确认密码正确。
- ❌ Timeout:网络延迟或 Redis 响应慢,调大 timeout。
- ❌ 阿里云无法连接:检查安全组、VPC、白名单设置。
六、结语
无论是本地开发调试还是线上生产部署,Spring Boot 2 都能轻松集成 Redis。掌握本地安装与阿里云接入两种模式,有助于你在不同阶段灵活应对需求。
通过本篇博客,你已经掌握了:
- Redis 的本地安装与配置
- Spring Boot 集成 Redis 的完整流程
- 阿里云 Redis 的接入方式
- 实际业务中的统计小实验
希望对你有所帮助!欢迎关注后续关于 Redis 高级特性的文章(如分布式锁、Lua 脚本、Stream 等)。
📌 参考链接:
- Spring Data Redis 官方文档
- 阿里云 Redis 产品页
- Redis 官网
本文内容适用于 Spring Boot 2.x 版本,Spring Boot 3+ 有部分 API 变更,请注意兼容性。
