在 Spring 中使用 Azure Redis 缓存
Azure Cache for Redis 提供基于 Redis 软件的内存中数据存储。 Redis 可提高使用后端数据存储的应用程序的性能和可伸缩性。
本教程演示如何使用 Redis 缓存在 Spring Boot 应用程序中存储和检索数据。
在本教程中,我们包括两种身份验证方法:Microsoft Entra 身份验证和 Redis 身份验证。 “无密码”选项卡显示“Microsoft Entra 身份验证”,“密码”选项卡显示 Redis 身份验证。
Microsoft Entra 身份验证是一种使用 Microsoft Entra ID 中定义的标识连接到 Azure Redis 缓存的机制。 通过 Microsoft Entra 身份验证,可以在一个中心位置集中管理数据库用户标识和其他 Microsoft 服务,从而简化权限管理。
Redis 身份验证使用 Redis 中的密码。 如果选择使用密码作为凭据,则需要自行管理密码。
先决条件
Azure 订阅 - 免费创建订阅。
Java 开发工具包 (JDK) 版本 17 或更高版本。
Apache Maven 版本 3.0 或更高版本。
用来测试功能的 cURL 或类似的 HTTP 实用工具。
Redis 缓存实例。 如果没有,请参阅 快速入门:创建开源 Redis 缓存。
Spring Boot 应用程序。 如果没有,请使用 Spring Initializr 创建一个 Maven 项目。 请务必选择 Maven 项目,并在“依赖项”下添加 Spring Web 和 Spring Data 反应 Redis 依赖项,然后选择 Java 版本 8 或更高版本。
将数据缓存到 Azure Redis 缓存
使用 Azure Redis 缓存实例,可以使用 Spring Cloud Azure 缓存数据。
若要使用 Lettuce 模块安装 Spring Cloud Azure Starter Data Redis,请将以下依赖项添加到 pom.xml 文件:
<dependencies>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-starter-data-redis-lettuce</artifactId>
</dependency>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>spring-cloud-azure-dependencies</artifactId>
<version>5.19.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
注意
此材料清单(BOM)应在pom.xml文件的部分中进行配置<dependencyManagement>
。 此配置可确保所有 Spring Cloud Azure 依赖项都使用相同的版本。 有关用于此 BOM 的版本的详细信息,请参阅 我应使用哪个版本的 Spring Cloud Azure。
编写应用程序代码
若要使用 Redis 缓存来存储和检索数据,请使用以下步骤配置应用程序:
在 application.properties 配置文件中配置 Redis 缓存凭据,如以下示例所示。
spring.data.redis.host=<your-redis-name>.redis.cache.windows.net spring.data.redis.port=6380 spring.data.redis.username=<your-redis-username> spring.data.redis.ssl.enabled=true spring.data.redis.azure.passwordless-enabled=true
编辑启动类文件以显示以下内容。 此代码存储并检索数据。
import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.CommandLineRunner; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.data.redis.core.ValueOperations; @SpringBootApplication public class DemoCacheApplication implements CommandLineRunner { private static final Logger LOGGER = LoggerFactory.getLogger(DemoCacheApplication.class); @Autowired private StringRedisTemplate template; public static void main(String[] args) { SpringApplication.run(DemoCacheApplication.class, args); } @Override public void run(String... args) { ValueOperations<String, String> ops = this.template.opsForValue(); String key = "testkey"; if(!this.template.hasKey(key)){ ops.set(key, "Hello World"); LOGGER.info("Add a key is done"); } LOGGER.info("Return the value from the cache: {}", ops.get(key)); } }
然后,启动应用程序。 应用程序从 Redis 缓存中检索数据。 应会看到类似于以下示例的日志:
Add a key is done
Return the value from the cache: Hello World
部署到 Azure Spring Apps
现在,你已在本地运行 Spring Boot 应用程序,现在可以将其移动到生产环境。 使用 Azure Spring Apps 可以轻松地将 Spring Boot 应用程序部署到 Azure,而无需进行任何代码更改。 该服务管理 Spring 应用程序的基础结构,让开发人员可以专注于代码。 Azure Spring Apps 可以通过以下方法提供生命周期管理:综合性监视和诊断、配置管理、服务发现、CI/CD 集成、蓝绿部署等。 若要将应用程序部署到 Azure Spring Apps,请参阅将 第一个应用程序部署到 Azure Spring Apps。
后续步骤
若要了解有关 Spring 和 Azure 的详细信息,请继续访问“Azure 上的 Spring”文档中心。