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

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

本文介绍支持的身份验证方法、客户端和示例代码,你可通过它们使用服务连接器将应用连接到 Azure Cache for Redis。在本文中,你还将找到创建服务连接时获取的默认环境变量名称、值和配置。

受支持的计算服务

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

  • Azure 应用服务
  • Azure 容器应用
  • Azure Functions
  • Azure Kubernetes 服务 (AKS)
  • Azure Spring Apps

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

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

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

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

使用下面的环境变量名称和应用程序属性将计算服务连接到 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);