オプション
家 Skill DevOps と CI/CD azure-resource-manager-redis-dotnet

azure-resource-manager-redis-dotnet

microsoft/skills microsoft/skills

Azure Resource Manager .NET SDK を使用して、Azure Cache for Redis インスタンスの管理を行います。これには、インスタンスの作成、ファイアウォール ルール、アクセス キー、パッチのスケジュール、地理的レプリケーション、プライベート エンドポイントなどが含まれます。

...すべて拡張します
3
更新された時間 2026年9月18日

Azure.ResourceManager.Redis (.NET)

Azure Resource Manager を通じて Azure Cache for Redis リソースをプロビジョニングおよび管理するための管理プレーン SDK。

⚠️ 管理プレーンとデータプレーンの違い

  • この SDK (Azure.ResourceManager.Redis): キャッシュの作成、ファイアウォール規則の設定、アクセスキーの管理、地理的レプリケーションの設定
  • データプレーン SDK (StackExchange.Redis):キーの取得/設定、パブリッシュ/サブスクライブ、ストリーム、Lua スクリプト

インストール

dotnet add package Azure.ResourceManager.Redis
dotnet add package Azure.Identity

現在のバージョン: 1.5.1 (安定版)
API バージョン: 2024-11-01
対象フレームワーク: .NET 8.0、.NET Standard 2.0

環境変数

AZURE_SUBSCRIPTION_ID= # 必須: Azure サブスクリプション ID
AZURE_TOKEN_CREDENTIALS=prod  # 本番環境で DefaultAzureCredential を使用する場合にのみ必須
AZURE_TENANT_ID= # サービスプリンシパル認証用 (オプション)
AZURE_CLIENT_ID= # サービスプリンシパル認証用(オプション)
AZURE_CLIENT_SECRET= # サービスプリンシパル認証用(オプション)

認証

using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Redis;

// ローカル開発環境:DefaultAzureCredential。本番環境:AZURE_TOKEN_CREDENTIALS=prod または AZURE_TOKEN_CREDENTIALS=を設定 
var credential = new DefaultAzureCredential(
    DefaultAzureCredential.DefaultEnvironmentVariableName
);
// または、本番環境では特定の認証情報を直接使用します:
// https://learn.microsoft.com/dotnet/api/overview/azure/identity-readme?view=azure-dotnet#credential-classes を参照
// var credential = new ManagedIdentityCredential();
var armClient = new ArmClient(credential);

// サブスクリプションを取得
var subscriptionId = Environment.GetEnvironmentVariable("AZURE_SUBSCRIPTION_ID");
var subscription = armClient.GetSubscriptionResource(
    new ResourceIdentifier($"/subscriptions/{subscriptionId}"));

リソース階層

ArmClient
└── SubscriptionResource
    └── ResourceGroupResource
        └── RedisResource
            ├── RedisFirewallRuleResource
            ├── RedisPatchScheduleResource
            ├── RedisLinkedServerWithPropertyResource
            ├── RedisPrivateEndpointConnectionResource
            └── RedisCacheAccessPolicyResource

主要なワークフロー

1. Redis キャッシュの作成

using Azure.ResourceManager.Redis;
using Azure.ResourceManager.Redis.Models;

// リソースグループを取得
var resourceGroup = await subscription
    .GetResourceGroupAsync("my-resource-group");

// キャッシュ構成を定義
var cacheData = new RedisCreateOrUpdateContent(
    location: AzureLocation.EastUS,
    sku: new RedisSku(RedisSkuName.Standard, RedisSkuFamily.BasicOrStandard, 1))
{
    EnableNonSslPort = false,
    MinimumTlsVersion = RedisTlsVersion.Tls1_2,
    RedisConfiguration = new RedisCommonConfiguration
    {
        MaxMemoryPolicy = "volatile-lru"
    },
    Tags =
    {
        ["environment"] = "production"
    }
};

// キャッシュの作成(長時間実行される操作)
var cacheCollection = resourceGroup.Value.GetAllRedis();
var operation = await cacheCollection.CreateOrUpdateAsync(
    WaitUntil.Completed,
    "my-redis-cache",
    cacheData);

RedisResource cache = operation.Value;
Console.WriteLine($"キャッシュが作成されました: {cache.Data.HostName}");

2. Redisキャッシュの取得

// 既存のキャッシュを取得
var cache = await resourceGroup.Value
    .GetRedisAsync("my-redis-cache");

Console.WriteLine($"ホスト: {cache.Value.Data.HostName}");
Console.WriteLine($"ポート: {cache.Value.Data.Port}");
Console.WriteLine($"SSL ポート: {cache.Value.Data.SslPort}");
Console.WriteLine($"プロビジョニング状態: {cache.Value.Data.ProvisioningState}");

3. Redisキャッシュの更新

var patchData = new RedisPatch
{
    Sku = new RedisSku(RedisSkuName.Standard, RedisSkuFamily.BasicOrStandard, 2),
    RedisConfiguration = new RedisCommonConfiguration
    {
        MaxMemoryPolicy = "allkeys-lru"
    }
};

var updateOperation = await cache.Value.UpdateAsync(
    WaitUntil.Completed,
    patchData);

4. Redisキャッシュの削除

await cache.Value.DeleteAsync(WaitUntil.Completed);

5. アクセスキーの取得

var keys = await cache.Value.GetKeysAsync();
Console.WriteLine($"プライマリキー: {keys.Value.PrimaryKey}");
Console.WriteLine($"セカンダリキー: {keys.Value.SecondaryKey}");

6. アクセスキーの再生成

var regenerateContent = new RedisRegenerateKeyContent(RedisRegenerateKeyType.Primary);
var newKeys = await cache.Value.RegenerateKeyAsync(regenerateContent);
Console.WriteLine($"新しいプライマリキー: {newKeys.Value.PrimaryKey}");

7. ファイアウォールルールの管理

// ファイアウォールルールの作成
var firewallData = new RedisFirewallRuleData(
    startIP: System.Net.IPAddress.Parse("10.0.0.1"),
    endIP: System.Net.IPAddress.Parse("10.0.0.255"));

var firewallCollection = cache.Value.GetRedisFirewallRules();
var firewallOperation = await firewallCollection.CreateOrUpdateAsync(
    WaitUntil.Completed,
    "allow-internal-network",
    firewallData);

// すべてのファイアウォールルールを一覧表示
await foreach (var rule in firewallCollection.GetAllAsync())
{
    Console.WriteLine($"ルール: {rule.Data.Name} ({rule.Data.StartIP} - {rule.Data.EndIP})");
}

// ファイアウォールルールを削除
var ruleToDelete = await firewallCollection.GetAsync("allow-internal-network");
await ruleToDelete.Value.DeleteAsync(WaitUntil.Completed);

8. パッチスケジュールの設定(Premium SKU)

// パッチのスケジュール設定には Premium SKU が必要です
var scheduleData = new RedisPatchScheduleData(
    new[]
    {
        new RedisPatchScheduleSetting(RedisDayOfWeek.Saturday, 2) // 土曜日の午前2時
        {
            MaintenanceWindow = TimeSpan.FromHours(5)
        },
        new RedisPatchScheduleSetting(RedisDayOfWeek.Saturday, 2) // 日曜日の午前2時
        {
            MaintenanceWindow = TimeSpan.FromHours(5)
        }
    });

var scheduleCollection = cache.Value.GetRedisPatchSchedules();
await scheduleCollection.CreateOrUpdateAsync(
    WaitUntil.Completed,
    RedisPatchScheduleDefaultName.Default,
    scheduleData);

9. データのインポート/エクスポート (プレミアム SKU)

// Blob ストレージからデータをインポート
var importContent = new ImportRdbContent(
    files: new[] { "https://mystorageaccount.blob.core.windows.net/container/dump.rdb" },
    format: "RDB");

await cache.Value.ImportDataAsync(WaitUntil.Completed, importContent);

// データを Blob ストレージにエクスポート
var exportContent = new ExportRdbContent(
    prefix: "backup",
    container: "https://mystorageaccount.blob.core.windows.net/container?sastoken",
    format: "RDB");

await cache.Value.ExportDataAsync(WaitUntil.Completed, exportContent);

10. 強制再起動

var rebootContent = new RedisRebootContent
{
    RebootType = RedisRebootType.AllNodes,
    ShardId = 0 // クラスタ化されたキャッシュの場合
};

await cache.Value.ForceRebootAsync(rebootContent);

SKU リファレンス

SKU ファミリー 容量 機能
基本 C 0~6 シングルノード、SLAなし、開発・テスト専用
スタンダード C 0~6 2ノード(プライマリ/レプリカ)、SLA
プレミアム P 1~5 クラスタリング、地理的レプリケーション、VNet、永続性

容量サイズ(ファミリー C - ベーシック/スタンダード)

  • C0: 250 MB
  • C1: 1 GB
  • C2: 2.5 GB
  • C3: 6 GB
  • C4: 13 GB
  • C5: 26 GB
  • C6: 53 GB

容量サイズ(ファミリー P - プレミアム)

  • P1: シャードあたり 6 GB
  • P2: シャードあたり 13 GB
  • P3: シャードあたり26 GB
  • P4: シャードあたり 53 GB
  • P5: シャードあたり 120 GB

キータイプのリファレンス

タイプ 目的
ArmClient すべての ARM 操作のエントリポイント
RedisResource Redisキャッシュインスタンスを表す
RedisCollection キャッシュのCRUD操作用のコレクション
RedisFirewallRuleResource IPフィルタリング用のファイアウォールルール
RedisPatchScheduleResource メンテナンスウィンドウの設定
RedisLinkedServerWithPropertyリソース 地理的レプリケーション対応のリンクされたサーバー
RedisPrivateEndpointConnectionResource プライベートエンドポイント接続
RedisCacheAccessPolicyResource RBAC アクセスポリシー
RedisCreateOrUpdateContent キャッシュ作成ペイロード
RedisPatch キャッシュ更新ペイロード
RedisSku SKUの設定(名称、ファミリー、容量)
RedisAccessKeys プライマリおよびセカンダリアクセスキー
RedisRegenerateKeyContent キー再生成リクエスト

ベストプラクティス

  1. 処理を続行する前に完了する必要がある操作には、 WaitUntil.Completedを使用してください
  2. 手動でポーリングを行う場合や、操作を並行して実行したい場合は 、WaitUntil.Startedを使用してください
  3. 常にDefaultAzureCredentialを使用し、キーをハードコードしてはいけません
  4. ARM API のエラーに対しては RequestFailedException を処理してください
  5. 冪等な操作には ` CreateOrUpdateAsync`を使用してください
  6. Get*メソッド(例:cache.GetRedisFirewallRules())を使用して階層をナビゲートしてください
  7. 地理的レプリケーション、クラスタリング、または永続化を必要とする本番環境のワークロードには、Premium SKU を使用してください
  8. TLS 1.2 以上を有効にするMinimumTlsVersion = RedisTlsVersion.Tls1_2に設定する
  9. セキュリティ上の理由から、非SSLポートを無効にするEnableNonSslPort = falseに設定する
  10. キーを定期的にローテーションするRegenerateKeyAsyncを使用し、接続文字列を更新する

エラー処理

using Azure;

try
{
    var operation = await cacheCollection.CreateOrUpdateAsync(
        WaitUntil.Completed, cacheName, cacheData);
}
catch (RequestFailedException ex) when (ex.Status == 409)
{
    Console.WriteLine("キャッシュはすでに存在します");
}
catch (RequestFailedException ex) when (ex.Status == 400)
{
    Console.WriteLine($"無効な構成: {ex.Message}");
}
catch (RequestFailedException ex)
{
    Console.WriteLine($"ARM エラー: {ex.Status} - {ex.ErrorCode}: {ex.Message}");
}

よくある落とし穴

  1. SKUのダウングレードは不可— プレミアムからスタンダード/ベーシックへのダウングレードはできません
  2. クラスタリングにはPremiumが必要です— シャード構成はPremium SKUでのみ利用可能です
  3. 地理的レプリケーションにはPremiumが必要です— リンクされたサーバーはPremiumキャッシュでのみ機能します
  4. VNetのインジェクションにはPremiumが必要です— 仮想ネットワークのサポートはPremiumのみです
  5. パッチのスケジュール設定には Premium が必要です— メンテナンスウィンドウの設定は Premium でのみ可能です
  6. キャッシュ名はグローバルに一意である必要があります — Redisキャッシュ名は、すべてのAzureサブスクリプション全体で一意である必要があります
  7. プロビジョニングに時間がかかる— キャッシュの作成には15~20分かかる場合があります。非同期パターンではWaitUntil.Startedを使用してください

StackExchange.Redis(データプレーン)への接続

この管理 SDK を使用してキャッシュを作成した後、データ操作には StackExchange.Redis を使用します:

using StackExchange.Redis;

// 管理 SDK から接続情報を取得
var cache = await resourceGroup.Value.GetRedisAsync("my-redis-cache");
var keys = await cache.Value.GetKeysAsync();

// StackExchange.Redis に接続
var connectionString = $"{cache.Value.Data.HostName}:{cache.Value.Data.SslPort},password={keys.Value.PrimaryKey},ssl=True,abortConnect=False";
var connection = ConnectionMultiplexer.Connect(connectionString);
var db = connection.GetDatabase();

// データ操作
await db.StringSetAsync("key", "value");
var value = await db.StringGetAsync("key");

関連する SDK

SDK 目的 インストール
StackExchange.Redis データプレーン(get/set、pub/sub、ストリーム) dotnet add package StackExchange.Redis
Azure.ResourceManager.Redis 管理プレーン(この SDK) dotnet add package Azure.ResourceManager.Redis
Microsoft.Azure.StackExchangeRedis Azure 専用の Redis 拡張機能 dotnet add package Microsoft.Azure.StackExchangeRedis
GitHubで見る
---
name: azure-resource-manager-redis-dotnet
description: Manage Azure Cache for Redis instances via the Azure Resource Manager .NET SDK, including creation, firewall rules, access keys, patch schedules, geo-replication, and private endpoints.
license: MIT
---

# Azure.ResourceManager.Redis (.NET)

Management plane SDK for provisioning and managing Azure Cache for Redis resources via Azure Resource Manager.

> **⚠️ Management vs Data Plane**
> - **This SDK (Azure.ResourceManager.Redis)**: Create caches, configure firewall rules, manage access keys, set up geo-replication
> - **Data Plane SDK (StackExchange.Redis)**: Get/set keys, pub/sub, streams, Lua scripts

## Installation

```bash
dotnet add package Azure.ResourceManager.Redis
dotnet add package Azure.Identity
```

**Current Version**: 1.5.1 (Stable)  
**API Version**: 2024-11-01  
**Target Frameworks**: .NET 8.0, .NET Standard 2.0

## Environment Variables

```bash
AZURE_SUBSCRIPTION_ID=<your-subscription-id>  # Required: Azure subscription ID
AZURE_TOKEN_CREDENTIALS=prod  # Required only if DefaultAzureCredential is used in production
AZURE_TENANT_ID=<tenant-id>  # For service principal auth (optional)
AZURE_CLIENT_ID=<client-id>  # For service principal auth (optional)
AZURE_CLIENT_SECRET=<client-secret>  # For service principal auth (optional)
```

## Authentication

```csharp
using Azure.Identity;
using Azure.ResourceManager;
using Azure.ResourceManager.Redis;

// Local dev: DefaultAzureCredential. Production: set AZURE_TOKEN_CREDENTIALS=prod or AZURE_TOKEN_CREDENTIALS=<specific_credential>
var credential = new DefaultAzureCredential(
    DefaultAzureCredential.DefaultEnvironmentVariableName
);
// Or use a specific credential directly in production:
// See https://learn.microsoft.com/dotnet/api/overview/azure/identity-readme?view=azure-dotnet#credential-classes
// var credential = new ManagedIdentityCredential();
var armClient = new ArmClient(credential);

// Get subscription
var subscriptionId = Environment.GetEnvironmentVariable("AZURE_SUBSCRIPTION_ID");
var subscription = armClient.GetSubscriptionResource(
    new ResourceIdentifier($"/subscriptions/{subscriptionId}"));
```

## Resource Hierarchy

```
ArmClient
└── SubscriptionResource
    └── ResourceGroupResource
        └── RedisResource
            ├── RedisFirewallRuleResource
            ├── RedisPatchScheduleResource
            ├── RedisLinkedServerWithPropertyResource
            ├── RedisPrivateEndpointConnectionResource
            └── RedisCacheAccessPolicyResource
```

## Core Workflows

### 1. Create Redis Cache

```csharp
using Azure.ResourceManager.Redis;
using Azure.ResourceManager.Redis.Models;

// Get resource group
var resourceGroup = await subscription
    .GetResourceGroupAsync("my-resource-group");

// Define cache configuration
var cacheData = new RedisCreateOrUpdateContent(
    location: AzureLocation.EastUS,
    sku: new RedisSku(RedisSkuName.Standard, RedisSkuFamily.BasicOrStandard, 1))
{
    EnableNonSslPort = false,
    MinimumTlsVersion = RedisTlsVersion.Tls1_2,
    RedisConfiguration = new RedisCommonConfiguration
    {
        MaxMemoryPolicy = "volatile-lru"
    },
    Tags =
    {
        ["environment"] = "production"
    }
};

// Create cache (long-running operation)
var cacheCollection = resourceGroup.Value.GetAllRedis();
var operation = await cacheCollection.CreateOrUpdateAsync(
    WaitUntil.Completed,
    "my-redis-cache",
    cacheData);

RedisResource cache = operation.Value;
Console.WriteLine($"Cache created: {cache.Data.HostName}");
```

### 2. Get Redis Cache

```csharp
// Get existing cache
var cache = await resourceGroup.Value
    .GetRedisAsync("my-redis-cache");

Console.WriteLine($"Host: {cache.Value.Data.HostName}");
Console.WriteLine($"Port: {cache.Value.Data.Port}");
Console.WriteLine($"SSL Port: {cache.Value.Data.SslPort}");
Console.WriteLine($"Provisioning State: {cache.Value.Data.ProvisioningState}");
```

### 3. Update Redis Cache

```csharp
var patchData = new RedisPatch
{
    Sku = new RedisSku(RedisSkuName.Standard, RedisSkuFamily.BasicOrStandard, 2),
    RedisConfiguration = new RedisCommonConfiguration
    {
        MaxMemoryPolicy = "allkeys-lru"
    }
};

var updateOperation = await cache.Value.UpdateAsync(
    WaitUntil.Completed,
    patchData);
```

### 4. Delete Redis Cache

```csharp
await cache.Value.DeleteAsync(WaitUntil.Completed);
```

### 5. Get Access Keys

```csharp
var keys = await cache.Value.GetKeysAsync();
Console.WriteLine($"Primary Key: {keys.Value.PrimaryKey}");
Console.WriteLine($"Secondary Key: {keys.Value.SecondaryKey}");
```

### 6. Regenerate Access Keys

```csharp
var regenerateContent = new RedisRegenerateKeyContent(RedisRegenerateKeyType.Primary);
var newKeys = await cache.Value.RegenerateKeyAsync(regenerateContent);
Console.WriteLine($"New Primary Key: {newKeys.Value.PrimaryKey}");
```

### 7. Manage Firewall Rules

```csharp
// Create firewall rule
var firewallData = new RedisFirewallRuleData(
    startIP: System.Net.IPAddress.Parse("10.0.0.1"),
    endIP: System.Net.IPAddress.Parse("10.0.0.255"));

var firewallCollection = cache.Value.GetRedisFirewallRules();
var firewallOperation = await firewallCollection.CreateOrUpdateAsync(
    WaitUntil.Completed,
    "allow-internal-network",
    firewallData);

// List all firewall rules
await foreach (var rule in firewallCollection.GetAllAsync())
{
    Console.WriteLine($"Rule: {rule.Data.Name} ({rule.Data.StartIP} - {rule.Data.EndIP})");
}

// Delete firewall rule
var ruleToDelete = await firewallCollection.GetAsync("allow-internal-network");
await ruleToDelete.Value.DeleteAsync(WaitUntil.Completed);
```

### 8. Configure Patch Schedule (Premium SKU)

```csharp
// Patch schedules require Premium SKU
var scheduleData = new RedisPatchScheduleData(
    new[]
    {
        new RedisPatchScheduleSetting(RedisDayOfWeek.Saturday, 2) // 2 AM Saturday
        {
            MaintenanceWindow = TimeSpan.FromHours(5)
        },
        new RedisPatchScheduleSetting(RedisDayOfWeek.Sunday, 2) // 2 AM Sunday
        {
            MaintenanceWindow = TimeSpan.FromHours(5)
        }
    });

var scheduleCollection = cache.Value.GetRedisPatchSchedules();
await scheduleCollection.CreateOrUpdateAsync(
    WaitUntil.Completed,
    RedisPatchScheduleDefaultName.Default,
    scheduleData);
```

### 9. Import/Export Data (Premium SKU)

```csharp
// Import data from blob storage
var importContent = new ImportRdbContent(
    files: new[] { "https://mystorageaccount.blob.core.windows.net/container/dump.rdb" },
    format: "RDB");

await cache.Value.ImportDataAsync(WaitUntil.Completed, importContent);

// Export data to blob storage
var exportContent = new ExportRdbContent(
    prefix: "backup",
    container: "https://mystorageaccount.blob.core.windows.net/container?sastoken",
    format: "RDB");

await cache.Value.ExportDataAsync(WaitUntil.Completed, exportContent);
```

### 10. Force Reboot

```csharp
var rebootContent = new RedisRebootContent
{
    RebootType = RedisRebootType.AllNodes,
    ShardId = 0 // For clustered caches
};

await cache.Value.ForceRebootAsync(rebootContent);
```

## SKU Reference

| SKU | Family | Capacity | Features |
|-----|--------|----------|----------|
| Basic | C | 0-6 | Single node, no SLA, dev/test only |
| Standard | C | 0-6 | Two nodes (primary/replica), SLA |
| Premium | P | 1-5 | Clustering, geo-replication, VNet, persistence |

**Capacity Sizes (Family C - Basic/Standard)**:
- C0: 250 MB
- C1: 1 GB
- C2: 2.5 GB
- C3: 6 GB
- C4: 13 GB
- C5: 26 GB
- C6: 53 GB

**Capacity Sizes (Family P - Premium)**:
- P1: 6 GB per shard
- P2: 13 GB per shard
- P3: 26 GB per shard
- P4: 53 GB per shard
- P5: 120 GB per shard

## Key Types Reference

| Type | Purpose |
|------|---------|
| `ArmClient` | Entry point for all ARM operations |
| `RedisResource` | Represents a Redis cache instance |
| `RedisCollection` | Collection for cache CRUD operations |
| `RedisFirewallRuleResource` | Firewall rule for IP filtering |
| `RedisPatchScheduleResource` | Maintenance window configuration |
| `RedisLinkedServerWithPropertyResource` | Geo-replication linked server |
| `RedisPrivateEndpointConnectionResource` | Private endpoint connection |
| `RedisCacheAccessPolicyResource` | RBAC access policy |
| `RedisCreateOrUpdateContent` | Cache creation payload |
| `RedisPatch` | Cache update payload |
| `RedisSku` | SKU configuration (name, family, capacity) |
| `RedisAccessKeys` | Primary and secondary access keys |
| `RedisRegenerateKeyContent` | Key regeneration request |

## Best Practices

1. **Use `WaitUntil.Completed`** for operations that must finish before proceeding
2. **Use `WaitUntil.Started`** when you want to poll manually or run operations in parallel
3. **Always use `DefaultAzureCredential`** — never hardcode keys
4. **Handle `RequestFailedException`** for ARM API errors
5. **Use `CreateOrUpdateAsync`** for idempotent operations
6. **Navigate hierarchy** via `Get*` methods (e.g., `cache.GetRedisFirewallRules()`)
7. **Use Premium SKU** for production workloads requiring geo-replication, clustering, or persistence
8. **Enable TLS 1.2 minimum** — set `MinimumTlsVersion = RedisTlsVersion.Tls1_2`
9. **Disable non-SSL port** — set `EnableNonSslPort = false` for security
10. **Rotate keys regularly** — use `RegenerateKeyAsync` and update connection strings

## Error Handling

```csharp
using Azure;

try
{
    var operation = await cacheCollection.CreateOrUpdateAsync(
        WaitUntil.Completed, cacheName, cacheData);
}
catch (RequestFailedException ex) when (ex.Status == 409)
{
    Console.WriteLine("Cache already exists");
}
catch (RequestFailedException ex) when (ex.Status == 400)
{
    Console.WriteLine($"Invalid configuration: {ex.Message}");
}
catch (RequestFailedException ex)
{
    Console.WriteLine($"ARM Error: {ex.Status} - {ex.ErrorCode}: {ex.Message}");
}
```

## Common Pitfalls

1. **SKU downgrades not allowed** — You cannot downgrade from Premium to Standard/Basic
2. **Clustering requires Premium** — Shard configuration only available on Premium SKU
3. **Geo-replication requires Premium** — Linked servers only work with Premium caches
4. **VNet injection requires Premium** — Virtual network support is Premium-only
5. **Patch schedules require Premium** — Maintenance windows only configurable on Premium
6. **Cache name globally unique** — Redis cache names must be unique across all Azure subscriptions
7. **Long provisioning times** — Cache creation can take 15-20 minutes; use `WaitUntil.Started` for async patterns

## Connecting with StackExchange.Redis (Data Plane)

After creating the cache with this management SDK, use StackExchange.Redis for data operations:

```csharp
using StackExchange.Redis;

// Get connection info from management SDK
var cache = await resourceGroup.Value.GetRedisAsync("my-redis-cache");
var keys = await cache.Value.GetKeysAsync();

// Connect with StackExchange.Redis
var connectionString = $"{cache.Value.Data.HostName}:{cache.Value.Data.SslPort},password={keys.Value.PrimaryKey},ssl=True,abortConnect=False";
var connection = ConnectionMultiplexer.Connect(connectionString);
var db = connection.GetDatabase();

// Data operations
await db.StringSetAsync("key", "value");
var value = await db.StringGetAsync("key");
```

## Related SDKs

| SDK | Purpose | Install |
|-----|---------|---------|
| `StackExchange.Redis` | Data plane (get/set, pub/sub, streams) | `dotnet add package StackExchange.Redis` |
| `Azure.ResourceManager.Redis` | Management plane (this SDK) | `dotnet add package Azure.ResourceManager.Redis` |
| `Microsoft.Azure.StackExchangeRedis` | Azure-specific Redis extensions | `dotnet add package Microsoft.Azure.StackExchangeRedis` |

すべてのファイル

0件のファイル

azure-resource-manager-redis-dotnetをインストール

スキルファイルをダウンロードし、.claude/skills/ ディレクトリに解凍してください。

ZIPをダウンロード

リポジトリをクローンし、スキルファイルをプロジェクトにコピーしてください。

git clone https://github.com/microsoft/skills/tree/main/.github/plugins/azure-sdk-dotnet/skills/azure-resource-manager-redis-dotnet # Copy SKILL.md to your .claude/skills/ directory

コピー コピー
クイックセットアップ: スキルフォルダを .claude/skills/ にコピーしてください。 Claude が自動的にそのスキルを検出して使用します。
リポジトリ microsoft/skills

関連スキル

Verification &amp; Quality Assurance
更新された時間 2026年6月29日
base44-cli
更新された時間 2026年6月29日
klingai-upgrade-migration
更新された時間 2026年7月3日
Railway CLI Management
更新された時間 2026年7月2日
OR