How do I install azure-resource-manager-redis-dotnet?
Download .github/plugins/azure-sdk-dotnet/skills/azure-resource-manager-redis-dotnet/SKILL.md from the publisher, or copy the path and open the repository. PlugMCP lists the skill and does not host the file.
Where does azure-resource-manager-redis-dotnet live?
The publisher keeps it at https://github.com/microsoft/skills.
Which agents can use azure-resource-manager-redis-dotnet?
Claude, Cursor, and Codex can read a SKILL.md you add from the publisher's repository.
|
name: azure-resource-manager-redis-dotnet
description: |
Azure Resource Manager SDK for Redis in .NET. Use for MANAGEMENT PLANE operations: creating/managing Azure Cache for Redis instances, firewall rules, access keys, patch schedules, linked servers (geo-replication), and private endpoints via Azure Resource Manager. NOT for data plane operations (get/set keys, pub/sub) - use StackExchange.Redis for that. Triggers: "Redis cache", "create Redis", "manage Redis", "ARM Redis", "RedisResource", "provision Redis", "Azure Cache for Redis".
license: MIT
metadata:
author: Microsoft
version: "1.0.0"
package: Azure.ResourceManager.Redis
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
Current Version: 1.5.1 (Stable) API Version: 2024-11-01 Target Frameworks: .NET 8.0, .NET Standard 2.0
Environment Variables
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
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}"));
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
// 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)
// 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)
// 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
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
Use WaitUntil.Completed for operations that must finish before proceeding
Use WaitUntil.Started when you want to poll manually or run operations in parallel
Always use DefaultAzureCredential — never hardcode keys
Handle RequestFailedException for ARM API errors
Use CreateOrUpdateAsync for idempotent operations
Navigate hierarchy via Get* methods (e.g., cache.GetRedisFirewallRules())
Use Premium SKU for production workloads requiring geo-replication, clustering, or persistence
Enable TLS 1.2 minimum — set MinimumTlsVersion = RedisTlsVersion.Tls1_2
Disable non-SSL port — set EnableNonSslPort = false for security
Rotate keys regularly — use RegenerateKeyAsync and update connection strings
SKU downgrades not allowed — You cannot downgrade from Premium to Standard/Basic
Clustering requires Premium — Shard configuration only available on Premium SKU
Geo-replication requires Premium — Linked servers only work with Premium caches
VNet injection requires Premium — Virtual network support is Premium-only
Patch schedules require Premium — Maintenance windows only configurable on Premium
Cache name globally unique — Redis cache names must be unique across all Azure subscriptions
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:
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");
How do I install azure-resource-manager-redis-dotnet?
Download .github/plugins/azure-sdk-dotnet/skills/azure-resource-manager-redis-dotnet/SKILL.md from the publisher, or copy the path and open the repository. PlugMCP lists the skill and does not host the file.
Where does azure-resource-manager-redis-dotnet live?
The publisher keeps it at https://github.com/microsoft/skills.
Which agents can use azure-resource-manager-redis-dotnet?
Claude, Cursor, and Codex can read a SKILL.md you add from the publisher's repository.