【SpringBoot】29 核心功能 - 数据访问 - Spring Boot 2 操作 Redis 实践指南:本地安装与阿里云 Redis 对比应用

文章目录

  • 前言
  • [一、本地 Redis 环境搭建与使用](#一、本地 Redis 环境搭建与使用)
    • [1. 安装 Redis(本地版)](#1. 安装 Redis(本地版))
      • [1.1 下载与安装](#1.1 下载与安装)
      • [1.2 验证安装](#1.2 验证安装)
    • [2. Spring Boot 项目配置 Redis](#2. Spring Boot 项目配置 Redis)
      • [2.1 添加依赖](#2.1 添加依赖)
      • [2.2 配置文件 `application.yml`](#2.2 配置文件 application.yml)
    • [3. 编写代码操作 Redis](#3. 编写代码操作 Redis)
      • [3.1 创建 Redis 操作类](#3.1 创建 Redis 操作类)
      • [3.2 控制器接口测试](#3.2 控制器接口测试)
    • [4. 测试本地 Redis 功能](#4. 测试本地 Redis 功能)
  • [二、阿里云 Redis 环境接入与使用](#二、阿里云 Redis 环境接入与使用)
    • [1. 准备阿里云 Redis 环境](#1. 准备阿里云 Redis 环境)
      • [1.1 创建阿里云 Redis 实例](#1.1 创建阿里云 Redis 实例)
      • [1.2 开通安全组规则](#1.2 开通安全组规则)
    • [2. 修改 Spring Boot 配置](#2. 修改 Spring Boot 配置)
    • [3. 使用阿里云 Redis 进行测试](#3. 使用阿里云 Redis 进行测试)
      • [3.1 增加连接异常处理(推荐)](#3.1 增加连接异常处理(推荐))
    • [4. 阿里云 Redis 操作小实验(统计功能)](#4. 阿里云 Redis 操作小实验(统计功能))
      • [4.1 新增控制器方法](#4.1 新增控制器方法)
      • [4.2 测试访问次数统计](#4.2 测试访问次数统计)
  • [三、对比总结:本地 vs 阿里云 Redis](#三、对比总结:本地 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 上的安装步骤:

bash 复制代码
# 更新包列表
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 验证安装

启动后,可通过命令行连接测试:

bash 复制代码
redis-cli ping

返回 PONG 表示成功。

2. Spring Boot 项目配置 Redis

2.1 添加依赖

pom.xml 中添加如下依赖:

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

yaml 复制代码
spring:
  redis:
    host: localhost
    port: 6379
    password: # 如果设置了密码,填写此处
    timeout: 5000ms

默认端口为 6379,若修改过需对应调整。

3. 编写代码操作 Redis

3.1 创建 Redis 操作类

java 复制代码
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;

@Service
public class RedisService {

    @Autowired
    private 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 控制器接口测试

java 复制代码
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/redis")
public class RedisController {

    @Autowired
    private 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 调用:

bash 复制代码
# 设置值
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 查看数据:

bash 复制代码
redis-cli get test

二、阿里云 Redis 环境接入与使用

1. 准备阿里云 Redis 环境

1.1 创建阿里云 Redis 实例

登录 阿里云控制台 → 进入 云数据库 Redis 版 → 创建实例。

选择:

  • 地域(如:华东1)
  • 实例规格(如:标准版 2GB)
  • 访问方式:内网或公网(建议内网安全)
  • 密码设置(务必记住)

创建完成后,获取以下信息:

1.2 开通安全组规则

确保你的 ECS 或本地机器能访问该 Redis 实例的端口(通常是 6379),需在安全组中放行对应端口。

2. 修改 Spring Boot 配置

application.yml 中的 Redis 配置改为阿里云参数:

yaml 复制代码
spring:
  redis:
    host: redis-xxxxx.cn-hangzhou.rds.aliyuncs.com
    port: 6379
    password: your_password_here
    timeout: 5000ms
    database: 0

注意:阿里云 Redis 不支持直接 redis-cli 连接,除非开启公网访问且配置白名单。

3. 使用阿里云 Redis 进行测试

保持原有代码不变,只需替换配置即可。

3.1 增加连接异常处理(推荐)

由于网络波动可能影响连接,建议增加重试机制或异常捕获:

java 复制代码
@Service
public class RedisService {

    @Autowired
    private 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 新增控制器方法

java 复制代码
@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 测试访问次数统计

多次请求:

bash 复制代码
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 Boot 2.x 版本,Spring Boot 3+ 有部分 API 变更,请注意兼容性。

相关推荐
l0sgAi5 小时前
PageHelper-Cursor:支持游标分页的 PageHelper 修改版,解决 MyBatis 深分页性能问题
spring boot·mybatis
hogenlaw6 小时前
自定义注解结合策略模式实现数据脱敏
spring boot
有你有我OK7 小时前
springboot Admin 服务端 客户端配置
spring boot·后端·elasticsearch
xiaoopin9 小时前
简单的分布式锁 SpringBoot Redisson‌
spring boot·分布式·后端
青鱼入云9 小时前
redisson介绍
redis·1024程序员节
哲Zheᗜe༘13 小时前
了解学习Redis主从复制
数据库·redis·学习
一条懒鱼66614 小时前
Redis Sentinel哨兵集群
数据库·redis·sentinel
Apache Flink16 小时前
理想汽车基于 Hologres + Flink 构建万亿级车联网信号实时分析平台
阿里云·flink·apache
Zhu_S W16 小时前
Redis跳表:高效有序数据结构的深度剖析
数据结构·数据库·redis