Spring Cloud Azure Redis 支持

本文 适用于:✅ 版本 4.19.0 ✅ 版本 5.19.0

本文介绍如何结合使用 Spring Cloud Azure 和 Spring Data Redis,并提供各种类型的凭据,以便向 Azure Redis 缓存进行身份验证。

Azure Redis 缓存 提供基于 Redis 软件的内存中数据存储。 Redis 可提高使用后端数据存储的应用程序的性能和可伸缩性。

支持的 Redis 版本

有关支持的版本,请参阅 当前版本

核心功能

无密码连接

无密码连接使用 Microsoft Entra 身份验证连接到 Azure 服务,而无需在应用程序、配置文件或环境变量中存储任何凭据。 Microsoft Entra 身份验证是一种使用 Microsoft Entra ID 中定义的标识连接到 Azure Redis 缓存的机制。 使用 Microsoft Entra 身份验证,可以在中心位置管理缓存标识和其他Microsoft服务,从而简化权限管理。

工作原理

Spring Cloud Azure 首先根据应用程序身份验证配置生成以下类型的凭据之一:

  • ClientSecretCredential
  • ClientCertificateCredential
  • UsernamePasswordCredential
  • ManagedIdentityCredential

如果未找到这些类型的凭据,则通过 DefaultTokenCredential 的凭据链用于从应用程序属性、环境变量、托管标识或 IDE 获取凭据。 有关详细信息,请参阅 Spring Cloud Azure 身份验证

配置

使用 Redis 支持时可配置的属性:

财产 描述 默认值 必填
spring.cloud.azure.redis.enabled 是否启用了 Azure Redis 缓存。
spring.cloud.azure.redis.name Azure Redis 缓存实例名称。 是的
spring.cloud.azure.redis.resource.resource-group Azure Redis 缓存的资源组。 是的
spring.cloud.azure.profile.subscription-id 订阅 ID。 是的
spring.data.redis.azure.passwordless-enabled 是否为 Azure Redis 缓存启用无密码。

基本用法

以下部分显示了经典 Spring Boot 应用程序使用方案。

使用无密码连接到 Azure Redis 缓存

  1. 将以下依赖项添加到项目。 这会自动在项目中以可传递方式包含 spring-boot-starter 依赖项。

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-starter-data-redis-lettuce</artifactId>
    </dependency>
    

    注意

    自版本 5.19.0以来,支持无密码连接。

    请记住添加 BOM spring-cloud-azure-dependencies 以及上述依赖项。 有关详细信息,请参阅 Spring Cloud Azure 开发人员指南入门 部分。

  2. application.yml 文件中配置以下属性:

    spring:
      data:
        redis:
          host: ${AZURE_CACHE_REDIS_HOST}
          username: ${AZURE_CACHE_REDIS_USERNAME}
          port: 6380
          ssl:
            enabled: true
          azure:
            passwordless-enabled: true
    

    重要

    无密码连接使用 Microsoft Entra 身份验证。 若要使用 Microsoft Entra 身份验证,应启用Microsoft Entra 身份验证并选择 user(managed identity/service principal) 来分配 Data Owner Access Policy

    有关详细信息和获取 的值,请参阅 使用 Microsoft Entra ID 进行缓存身份验证的缓存 部分中的“启用Microsoft条目 ID 身份验证”。

使用托管标识连接到 Azure Cache for Redis

  1. 若要使用托管标识,需要为服务启用托管标识,在缓存上启用Microsoft Entra 身份验证。

  2. 然后,在 application.yml 文件中添加以下属性:

    spring:
      cloud:
        azure:
          credential:
            managed-identity-enabled: true
    

    重要

    redis.username 应更改为托管标识对象(主体)ID。

    如果使用用户分配的托管标识,则还需要使用用户分配的托管标识客户端 ID 添加属性 spring.cloud.azure.credential.client-id

通过 Azure 资源管理器连接到 Azure Redis 缓存

使用以下步骤连接到 Azure Redis 缓存:

  1. 将以下依赖项添加到项目。 这会自动在项目中以可传递方式包含 spring-boot-starter 依赖项。

    <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-starter-data-redis-lettuce</artifactId>
    </dependency>
    <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-resourcemanager</artifactId>
    </dependency>
    <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>
    

    注意

    请记住添加 BOM spring-cloud-azure-dependencies 以及上述依赖项。 有关详细信息,请参阅 Spring Cloud Azure 开发人员指南入门 部分。

  1. application.yml 文件中配置以下属性:

    spring:
      cloud:
        azure:
          profile:
            subscription-id: ${AZURE_SUBSCRIPTION_ID}
          redis:
            name: ${AZURE_CACHE_REDIS_NAME}
            resource:
              resource-group: ${AZURE_RESOURCE_GROUP}
    

样品

请参阅 GitHub 上的 azure-spring-boot-samples 存储库