你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用服务连接器集成 Azure Cache for Redis

可以使用服务连接器将 Azure Cache for Redis 连接到其他云服务。 本文概述了支持的身份验证方法和客户端,并提供示例代码。 它还显示你在创建服务连接时获得的默认环境变量名称和值(或 Spring Boot 配置)。

受支持的计算服务

可以使用服务连接器将以下计算服务连接到 Azure Cache for Redis:

  • Azure 应用程序服务
  • Azure Container Apps
  • Azure Functions
  • Azure Kubernetes 服务 (AKS)
  • Azure Spring Apps

受支持的身份验证和客户端类型

下表显示了使用服务连接器将计算服务连接到 Azure Cache for Redis 时所支持的身份验证方法与客户端的组合。 “是”表示组合受到支持。 “否”表示不受支持。

客户端类型 系统分配的托管标识 用户分配的托管标识 机密/连接字符串 服务主体
.NET
Go
Java
Java - Spring Boot
Node.js
Python

除 Go 和 Java - Spring Boot 之外,所有客户端类型都可以使用表中引用的任何身份验证方法来使用服务连接器连接到 Azure Redis 缓存。 Go 和 Java - Spring Boot 唯一支持的身份验证方法是机密/连接字符串或服务主体。

默认环境变量名称或应用程序属性和示例代码

使用下面的环境变量名称和应用程序属性将计算服务连接到 Redis 服务器。 若要详细了解命名约定,请参阅服务连接器内部一文。

系统分配的托管标识

默认环境变量名称 说明 示例值
AZURE_REDIS_HOST Redis 终结点 <RedisName>.redis.cache.windows.net

代码示例

下面的步骤和代码显示如何使用系统分配的托管标识连接到 Redis。

  1. 安装依赖项。

    dotnet add package Microsoft.Azure.StackExchangeRedis --version 3.2.0
    
  2. 使用服务连接器设置的环境变量添加身份验证逻辑。 有关详细信息,请参阅 Microsoft.Azure.StackExchangeRedis 扩展

    using StackExchange.Redis;
    var cacheHostName = Environment.GetEnvironmentVariable("AZURE_REDIS_HOST");
    var configurationOptions = ConfigurationOptions.Parse($"{cacheHostName}:6380");
    
    // Uncomment the following lines corresponding to the authentication type you want to use.
    // For system-assigned identity.
    // await configurationOptions.ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential());
    
    // For user-assigned identity.
    // var managedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTID");
    // await configurationOptions.ConfigureForAzureWithUserAssignedManagedIdentityAsync(managedIdentityClientId);
    
    // Service principal secret.
    // var clientId = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTID");
    // var tenantId = Environment.GetEnvironmentVariable("AZURE_REDIS_TENANTID");
    // var secret = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTSECRET");
    // await configurationOptions.ConfigureForAzureWithServicePrincipalAsync(clientId, tenantId, secret);
    
    
    var connectionMultiplexer = await ConnectionMultiplexer.ConnectAsync(configurationOptions);
    

用户分配的托管标识

默认环境变量名称 说明 示例值
AZURE_REDIS_HOST Redis 终结点 <RedisName>.redis.cache.windows.net
AZURE_REDIS_CLIENTID 托管标识客户端 ID <client-ID>

代码示例

下面的步骤和代码显示如何使用用户分配的托管标识连接到 Redis。

  1. 安装依赖项。

    dotnet add package Microsoft.Azure.StackExchangeRedis --version 3.2.0
    
  2. 使用服务连接器设置的环境变量添加身份验证逻辑。 有关详细信息,请参阅 Microsoft.Azure.StackExchangeRedis 扩展

    using StackExchange.Redis;
    var cacheHostName = Environment.GetEnvironmentVariable("AZURE_REDIS_HOST");
    var configurationOptions = ConfigurationOptions.Parse($"{cacheHostName}:6380");
    
    // Uncomment the following lines corresponding to the authentication type you want to use.
    // For system-assigned identity.
    // await configurationOptions.ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential());
    
    // For user-assigned identity.
    // var managedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTID");
    // await configurationOptions.ConfigureForAzureWithUserAssignedManagedIdentityAsync(managedIdentityClientId);
    
    // Service principal secret.
    // var clientId = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTID");
    // var tenantId = Environment.GetEnvironmentVariable("AZURE_REDIS_TENANTID");
    // var secret = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTSECRET");
    // await configurationOptions.ConfigureForAzureWithServicePrincipalAsync(clientId, tenantId, secret);
    
    
    var connectionMultiplexer = await ConnectionMultiplexer.ConnectAsync(configurationOptions);
    

连接字符串

警告

我们建议使用最安全的可用身份验证流。 此处所述的身份验证流需要很高度的信任应用程序,并且附带了其他流中不存在的风险。 仅在无法使用其他更安全的流(例如托管标识)时才应使用此流。

默认环境变量名称 说明 示例值
AZURE_REDIS_CONNECTIONSTRING StackExchange.Redis 连接字符串 <redis-server-name>.redis.cache.windows.net:6380,password=<redis-key>,ssl=True,defaultDatabase=0

代码示例

下面的步骤和代码显示如何使用连接字符串连接到 Azure Cache for Redis。

  1. 安装依赖项。

    dotnet add package StackExchange.Redis --version 2.6.122
    
  2. 从服务连接器添加的环境变量中获取连接字符串。

    using StackExchange.Redis;
    var connectionString = Environment.GetEnvironmentVariable("AZURE_REDIS_CONNECTIONSTRING");
    var _redisConnection = await RedisConnection.InitializeAsync(connectionString: connectionString);
    

服务主体

默认环境变量名称 说明 示例值
AZURE_REDIS_HOST Redis 终结点 <RedisName>.redis.cache.windows.net
AZURE_REDIS_CLIENTID 服务主体的客户端 ID <client-ID>
AZURE_REDIS_CLIENTSECRET 服务主体机密 <client-secret>
AZURE_REDIS_TENANTID 服务主体的租户 ID <tenant-id>

代码示例

下面的步骤和代码显示如何使用服务主体连接到 Redis。

  1. 安装依赖项。

    dotnet add package Microsoft.Azure.StackExchangeRedis --version 3.2.0
    
  2. 使用服务连接器设置的环境变量添加身份验证逻辑。 有关详细信息,请参阅 Microsoft.Azure.StackExchangeRedis 扩展

    using StackExchange.Redis;
    var cacheHostName = Environment.GetEnvironmentVariable("AZURE_REDIS_HOST");
    var configurationOptions = ConfigurationOptions.Parse($"{cacheHostName}:6380");
    
    // Uncomment the following lines corresponding to the authentication type you want to use.
    // For system-assigned identity.
    // await configurationOptions.ConfigureForAzureWithTokenCredentialAsync(new DefaultAzureCredential());
    
    // For user-assigned identity.
    // var managedIdentityClientId = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTID");
    // await configurationOptions.ConfigureForAzureWithUserAssignedManagedIdentityAsync(managedIdentityClientId);
    
    // Service principal secret.
    // var clientId = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTID");
    // var tenantId = Environment.GetEnvironmentVariable("AZURE_REDIS_TENANTID");
    // var secret = Environment.GetEnvironmentVariable("AZURE_REDIS_CLIENTSECRET");
    // await configurationOptions.ConfigureForAzureWithServicePrincipalAsync(clientId, tenantId, secret);
    
    
    var connectionMultiplexer = await ConnectionMultiplexer.ConnectAsync(configurationOptions);