当前位置: 首页 > news >正文

【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,分别从以下两个方面展开:

  1. 本地环境安装并配置 Redis
  2. 阿里云 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)
扩展性差(手动扩容)强(一键升级)
适用场景开发、测试、小型项目生产环境、高并发系统

四、最佳实践建议

  1. 生产环境优先使用云 Redis,避免运维负担。
  2. 使用 @EnableCaching + @Cacheable 注解简化缓存逻辑。
  3. 合理设置过期时间,防止内存泄漏。
  4. 使用 Redisson 或 Lettuce 替代 Jedis(Spring Boot 2 默认使用 Lettuce)。
  5. 监控 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 变更,请注意兼容性。

http://www.dtcms.com/a/540091.html

相关文章:

  • B.40.3.1-Spring Boot与Spring Cloud核心技术详解
  • HarmonyOS RemoteWindow远程窗口组件的分布式能力深度解析
  • HarmonyOS自动化测试与持续集成实战指南
  • 智慧团建网站入口官网手机前端开发软件工具
  • 中国建设银行金华分行网站微信小程序在哪里找出来
  • Visual Basic 二进制文件
  • WEB前端技术基础(第四章:JavaScript-网页动态交互语言)
  • 房屋租赁合同中协助办证义务分析及租金退还法律意见
  • 广州住房和城乡建设厅网站网站建设 中企动力公司
  • 外贸网站空间哪个好WordPress首页id
  • STM32F407移植FreeRTOS完整教程(HAL库版本)
  • Flink 并行度与最大并行度从 0 到弹性扩缩容
  • STL list深度解析:从原理到手写实现
  • AI驱动数据分析革新:奥威BI一键生成智能报告
  • day20_权限控制
  • Flutter 状态管理详解:深入理解与使用 Bloc
  • Spring Boot 移除 Undertow 深度解析:技术背景、迁移方案与性能优化实践
  • c# stateless介绍
  • 烽火台网站网站优化要从哪些方面做
  • 建设一个网站需要多少钱网页版游戏在线玩2022
  • 基于Flask的穷游网酒店数据分析系统(源码+论文+部署+安装)
  • Linux系统--线程的同步与互斥
  • 智慧校园顶层设计与规划方案PPT(71页)
  • 滨州网站建设费用学校网站管理系统 php
  • Spring Boot3零基础教程,定制 Health 健康端点,笔记83
  • Linux 反向 Shell 分析
  • Go Web 编程快速入门 11 - WebSocket实时通信:实时消息推送和双向通信
  • 科研数据可视化工具:助力学术成果清晰呈现
  • 基于GIS的智慧畜牧数据可视化监控平台
  • 热力图可视化为何被广泛应用?| 图扑数字孪生