Deploy Azure Redis Cache

The azure-native:redis:Redis resource, part of the Pulumi Azure Native provider, provisions Azure Cache for Redis instances with SKU selection, network placement, and clustering configuration. This guide focuses on three capabilities: Premium SKU deployment with VNet isolation, availability zone configuration, and Redis version management.

Redis caches require a resource group and may reference VNet subnets for private deployment. The examples are intentionally small. Combine them with your own VNet infrastructure, access policies, and monitoring configuration.

Deploy a Premium cache with VNet isolation and clustering

Production deployments often require network isolation and horizontal scaling through sharding and read replicas.

import * as pulumi from "@pulumi/pulumi";
import * as azure_native from "@pulumi/azure-native";

const redis = new azure_native.redis.Redis("redis", {
    enableNonSslPort: true,
    location: "East US",
    minimumTlsVersion: azure_native.redis.TlsVersion.TlsVersion_1_2,
    name: "cache1",
    redisConfiguration: {
        maxmemoryPolicy: "allkeys-lru",
    },
    redisVersion: "4",
    replicasPerPrimary: 2,
    resourceGroupName: "rg1",
    shardCount: 2,
    sku: {
        capacity: 1,
        family: azure_native.redis.SkuFamily.P,
        name: azure_native.redis.SkuName.Premium,
    },
    staticIP: "192.168.0.5",
    subnetId: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/network1/subnets/subnet1",
    zones: ["1"],
});
import pulumi
import pulumi_azure_native as azure_native

redis = azure_native.redis.Redis("redis",
    enable_non_ssl_port=True,
    location="East US",
    minimum_tls_version=azure_native.redis.TlsVersion.TLS_VERSION_1_2,
    name="cache1",
    redis_configuration={
        "maxmemory_policy": "allkeys-lru",
    },
    redis_version="4",
    replicas_per_primary=2,
    resource_group_name="rg1",
    shard_count=2,
    sku={
        "capacity": 1,
        "family": azure_native.redis.SkuFamily.P,
        "name": azure_native.redis.SkuName.PREMIUM,
    },
    static_ip="192.168.0.5",
    subnet_id="/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/network1/subnets/subnet1",
    zones=["1"])
package main

import (
	redis "github.com/pulumi/pulumi-azure-native-sdk/redis/v3"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := redis.NewRedis(ctx, "redis", &redis.RedisArgs{
			EnableNonSslPort:  pulumi.Bool(true),
			Location:          pulumi.String("East US"),
			MinimumTlsVersion: pulumi.String(redis.TlsVersion_1_2),
			Name:              pulumi.String("cache1"),
			RedisConfiguration: &redis.RedisCommonPropertiesRedisConfigurationArgs{
				MaxmemoryPolicy: pulumi.String("allkeys-lru"),
			},
			RedisVersion:       pulumi.String("4"),
			ReplicasPerPrimary: pulumi.Int(2),
			ResourceGroupName:  pulumi.String("rg1"),
			ShardCount:         pulumi.Int(2),
			Sku: &redis.SkuArgs{
				Capacity: pulumi.Int(1),
				Family:   pulumi.String(redis.SkuFamilyP),
				Name:     pulumi.String(redis.SkuNamePremium),
			},
			StaticIP: pulumi.String("192.168.0.5"),
			SubnetId: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/network1/subnets/subnet1"),
			Zones: pulumi.StringArray{
				pulumi.String("1"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;

return await Deployment.RunAsync(() => 
{
    var redis = new AzureNative.Redis.Redis("redis", new()
    {
        EnableNonSslPort = true,
        Location = "East US",
        MinimumTlsVersion = AzureNative.Redis.TlsVersion.TlsVersion_1_2,
        Name = "cache1",
        RedisConfiguration = new AzureNative.Redis.Inputs.RedisCommonPropertiesRedisConfigurationArgs
        {
            MaxmemoryPolicy = "allkeys-lru",
        },
        RedisVersion = "4",
        ReplicasPerPrimary = 2,
        ResourceGroupName = "rg1",
        ShardCount = 2,
        Sku = new AzureNative.Redis.Inputs.SkuArgs
        {
            Capacity = 1,
            Family = AzureNative.Redis.SkuFamily.P,
            Name = AzureNative.Redis.SkuName.Premium,
        },
        StaticIP = "192.168.0.5",
        SubnetId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/network1/subnets/subnet1",
        Zones = new[]
        {
            "1",
        },
    });

});
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.redis.Redis;
import com.pulumi.azurenative.redis.RedisArgs;
import com.pulumi.azurenative.redis.inputs.RedisCommonPropertiesRedisConfigurationArgs;
import com.pulumi.azurenative.redis.inputs.SkuArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var redis = new Redis("redis", RedisArgs.builder()
            .enableNonSslPort(true)
            .location("East US")
            .minimumTlsVersion("1.2")
            .name("cache1")
            .redisConfiguration(RedisCommonPropertiesRedisConfigurationArgs.builder()
                .maxmemoryPolicy("allkeys-lru")
                .build())
            .redisVersion("4")
            .replicasPerPrimary(2)
            .resourceGroupName("rg1")
            .shardCount(2)
            .sku(SkuArgs.builder()
                .capacity(1)
                .family("P")
                .name("Premium")
                .build())
            .staticIP("192.168.0.5")
            .subnetId("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/network1/subnets/subnet1")
            .zones("1")
            .build());

    }
}
resources:
  redis:
    type: azure-native:redis:Redis
    properties:
      enableNonSslPort: true
      location: East US
      minimumTlsVersion: '1.2'
      name: cache1
      redisConfiguration:
        maxmemoryPolicy: allkeys-lru
      redisVersion: '4'
      replicasPerPrimary: 2
      resourceGroupName: rg1
      shardCount: 2
      sku:
        capacity: 1
        family: P
        name: Premium
      staticIP: 192.168.0.5
      subnetId: /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/network1/subnets/subnet1
      zones:
        - '1'

The sku property selects the Premium tier, which supports VNet injection and clustering. The subnetId places the cache in a private subnet, isolating it from public internet access. The shardCount property enables horizontal scaling by distributing data across multiple Redis nodes, while replicasPerPrimary adds read replicas for each primary shard. The zones property pins the cache to specific availability zones, and staticIP assigns a fixed private IP address within the subnet.

Enable automatic zone redundancy for high availability

Teams that need zone redundancy without managing zone assignments can let Azure automatically distribute cache nodes.

import * as pulumi from "@pulumi/pulumi";
import * as azure_native from "@pulumi/azure-native";

const redis = new azure_native.redis.Redis("redis", {
    enableNonSslPort: true,
    location: "East US",
    minimumTlsVersion: azure_native.redis.TlsVersion.TlsVersion_1_2,
    name: "cache1",
    redisConfiguration: {
        maxmemoryPolicy: "allkeys-lru",
    },
    replicasPerPrimary: 2,
    resourceGroupName: "rg1",
    shardCount: 2,
    sku: {
        capacity: 1,
        family: azure_native.redis.SkuFamily.P,
        name: azure_native.redis.SkuName.Premium,
    },
    staticIP: "192.168.0.5",
    subnetId: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/network1/subnets/subnet1",
    zonalAllocationPolicy: azure_native.redis.ZonalAllocationPolicy.Automatic,
});
import pulumi
import pulumi_azure_native as azure_native

redis = azure_native.redis.Redis("redis",
    enable_non_ssl_port=True,
    location="East US",
    minimum_tls_version=azure_native.redis.TlsVersion.TLS_VERSION_1_2,
    name="cache1",
    redis_configuration={
        "maxmemory_policy": "allkeys-lru",
    },
    replicas_per_primary=2,
    resource_group_name="rg1",
    shard_count=2,
    sku={
        "capacity": 1,
        "family": azure_native.redis.SkuFamily.P,
        "name": azure_native.redis.SkuName.PREMIUM,
    },
    static_ip="192.168.0.5",
    subnet_id="/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/network1/subnets/subnet1",
    zonal_allocation_policy=azure_native.redis.ZonalAllocationPolicy.AUTOMATIC)
package main

import (
	redis "github.com/pulumi/pulumi-azure-native-sdk/redis/v3"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := redis.NewRedis(ctx, "redis", &redis.RedisArgs{
			EnableNonSslPort:  pulumi.Bool(true),
			Location:          pulumi.String("East US"),
			MinimumTlsVersion: pulumi.String(redis.TlsVersion_1_2),
			Name:              pulumi.String("cache1"),
			RedisConfiguration: &redis.RedisCommonPropertiesRedisConfigurationArgs{
				MaxmemoryPolicy: pulumi.String("allkeys-lru"),
			},
			ReplicasPerPrimary: pulumi.Int(2),
			ResourceGroupName:  pulumi.String("rg1"),
			ShardCount:         pulumi.Int(2),
			Sku: &redis.SkuArgs{
				Capacity: pulumi.Int(1),
				Family:   pulumi.String(redis.SkuFamilyP),
				Name:     pulumi.String(redis.SkuNamePremium),
			},
			StaticIP:              pulumi.String("192.168.0.5"),
			SubnetId:              pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/network1/subnets/subnet1"),
			ZonalAllocationPolicy: pulumi.String(redis.ZonalAllocationPolicyAutomatic),
		})
		if err != nil {
			return err
		}
		return nil
	})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;

return await Deployment.RunAsync(() => 
{
    var redis = new AzureNative.Redis.Redis("redis", new()
    {
        EnableNonSslPort = true,
        Location = "East US",
        MinimumTlsVersion = AzureNative.Redis.TlsVersion.TlsVersion_1_2,
        Name = "cache1",
        RedisConfiguration = new AzureNative.Redis.Inputs.RedisCommonPropertiesRedisConfigurationArgs
        {
            MaxmemoryPolicy = "allkeys-lru",
        },
        ReplicasPerPrimary = 2,
        ResourceGroupName = "rg1",
        ShardCount = 2,
        Sku = new AzureNative.Redis.Inputs.SkuArgs
        {
            Capacity = 1,
            Family = AzureNative.Redis.SkuFamily.P,
            Name = AzureNative.Redis.SkuName.Premium,
        },
        StaticIP = "192.168.0.5",
        SubnetId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/network1/subnets/subnet1",
        ZonalAllocationPolicy = AzureNative.Redis.ZonalAllocationPolicy.Automatic,
    });

});
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.redis.Redis;
import com.pulumi.azurenative.redis.RedisArgs;
import com.pulumi.azurenative.redis.inputs.RedisCommonPropertiesRedisConfigurationArgs;
import com.pulumi.azurenative.redis.inputs.SkuArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var redis = new Redis("redis", RedisArgs.builder()
            .enableNonSslPort(true)
            .location("East US")
            .minimumTlsVersion("1.2")
            .name("cache1")
            .redisConfiguration(RedisCommonPropertiesRedisConfigurationArgs.builder()
                .maxmemoryPolicy("allkeys-lru")
                .build())
            .replicasPerPrimary(2)
            .resourceGroupName("rg1")
            .shardCount(2)
            .sku(SkuArgs.builder()
                .capacity(1)
                .family("P")
                .name("Premium")
                .build())
            .staticIP("192.168.0.5")
            .subnetId("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/network1/subnets/subnet1")
            .zonalAllocationPolicy("Automatic")
            .build());

    }
}
resources:
  redis:
    type: azure-native:redis:Redis
    properties:
      enableNonSslPort: true
      location: East US
      minimumTlsVersion: '1.2'
      name: cache1
      redisConfiguration:
        maxmemoryPolicy: allkeys-lru
      replicasPerPrimary: 2
      resourceGroupName: rg1
      shardCount: 2
      sku:
        capacity: 1
        family: P
        name: Premium
      staticIP: 192.168.0.5
      subnetId: /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/network1/subnets/subnet1
      zonalAllocationPolicy: Automatic

The zonalAllocationPolicy property controls how Azure assigns availability zones. Setting it to “Automatic” enables zone redundancy and lets Azure select zones based on regional availability and capacity. This differs from the user-defined approach where you explicitly specify zones; automatic allocation adapts to Azure’s infrastructure without requiring you to track zone availability.

Pin to the latest Redis version automatically

Applications that want to stay current with Redis features can use the “Latest” version specifier.

import * as pulumi from "@pulumi/pulumi";
import * as azure_native from "@pulumi/azure-native";

const redis = new azure_native.redis.Redis("redis", {
    enableNonSslPort: true,
    location: "East US",
    minimumTlsVersion: azure_native.redis.TlsVersion.TlsVersion_1_2,
    name: "cache1",
    redisConfiguration: {
        maxmemoryPolicy: "allkeys-lru",
    },
    redisVersion: "Latest",
    replicasPerPrimary: 2,
    resourceGroupName: "rg1",
    shardCount: 2,
    sku: {
        capacity: 1,
        family: azure_native.redis.SkuFamily.P,
        name: azure_native.redis.SkuName.Premium,
    },
    staticIP: "192.168.0.5",
    subnetId: "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/network1/subnets/subnet1",
    zones: ["1"],
});
import pulumi
import pulumi_azure_native as azure_native

redis = azure_native.redis.Redis("redis",
    enable_non_ssl_port=True,
    location="East US",
    minimum_tls_version=azure_native.redis.TlsVersion.TLS_VERSION_1_2,
    name="cache1",
    redis_configuration={
        "maxmemory_policy": "allkeys-lru",
    },
    redis_version="Latest",
    replicas_per_primary=2,
    resource_group_name="rg1",
    shard_count=2,
    sku={
        "capacity": 1,
        "family": azure_native.redis.SkuFamily.P,
        "name": azure_native.redis.SkuName.PREMIUM,
    },
    static_ip="192.168.0.5",
    subnet_id="/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/network1/subnets/subnet1",
    zones=["1"])
package main

import (
	redis "github.com/pulumi/pulumi-azure-native-sdk/redis/v3"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)

func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := redis.NewRedis(ctx, "redis", &redis.RedisArgs{
			EnableNonSslPort:  pulumi.Bool(true),
			Location:          pulumi.String("East US"),
			MinimumTlsVersion: pulumi.String(redis.TlsVersion_1_2),
			Name:              pulumi.String("cache1"),
			RedisConfiguration: &redis.RedisCommonPropertiesRedisConfigurationArgs{
				MaxmemoryPolicy: pulumi.String("allkeys-lru"),
			},
			RedisVersion:       pulumi.String("Latest"),
			ReplicasPerPrimary: pulumi.Int(2),
			ResourceGroupName:  pulumi.String("rg1"),
			ShardCount:         pulumi.Int(2),
			Sku: &redis.SkuArgs{
				Capacity: pulumi.Int(1),
				Family:   pulumi.String(redis.SkuFamilyP),
				Name:     pulumi.String(redis.SkuNamePremium),
			},
			StaticIP: pulumi.String("192.168.0.5"),
			SubnetId: pulumi.String("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/network1/subnets/subnet1"),
			Zones: pulumi.StringArray{
				pulumi.String("1"),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using AzureNative = Pulumi.AzureNative;

return await Deployment.RunAsync(() => 
{
    var redis = new AzureNative.Redis.Redis("redis", new()
    {
        EnableNonSslPort = true,
        Location = "East US",
        MinimumTlsVersion = AzureNative.Redis.TlsVersion.TlsVersion_1_2,
        Name = "cache1",
        RedisConfiguration = new AzureNative.Redis.Inputs.RedisCommonPropertiesRedisConfigurationArgs
        {
            MaxmemoryPolicy = "allkeys-lru",
        },
        RedisVersion = "Latest",
        ReplicasPerPrimary = 2,
        ResourceGroupName = "rg1",
        ShardCount = 2,
        Sku = new AzureNative.Redis.Inputs.SkuArgs
        {
            Capacity = 1,
            Family = AzureNative.Redis.SkuFamily.P,
            Name = AzureNative.Redis.SkuName.Premium,
        },
        StaticIP = "192.168.0.5",
        SubnetId = "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/network1/subnets/subnet1",
        Zones = new[]
        {
            "1",
        },
    });

});
package generated_program;

import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.azurenative.redis.Redis;
import com.pulumi.azurenative.redis.RedisArgs;
import com.pulumi.azurenative.redis.inputs.RedisCommonPropertiesRedisConfigurationArgs;
import com.pulumi.azurenative.redis.inputs.SkuArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;

public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }

    public static void stack(Context ctx) {
        var redis = new Redis("redis", RedisArgs.builder()
            .enableNonSslPort(true)
            .location("East US")
            .minimumTlsVersion("1.2")
            .name("cache1")
            .redisConfiguration(RedisCommonPropertiesRedisConfigurationArgs.builder()
                .maxmemoryPolicy("allkeys-lru")
                .build())
            .redisVersion("Latest")
            .replicasPerPrimary(2)
            .resourceGroupName("rg1")
            .shardCount(2)
            .sku(SkuArgs.builder()
                .capacity(1)
                .family("P")
                .name("Premium")
                .build())
            .staticIP("192.168.0.5")
            .subnetId("/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/network1/subnets/subnet1")
            .zones("1")
            .build());

    }
}
resources:
  redis:
    type: azure-native:redis:Redis
    properties:
      enableNonSslPort: true
      location: East US
      minimumTlsVersion: '1.2'
      name: cache1
      redisConfiguration:
        maxmemoryPolicy: allkeys-lru
      redisVersion: Latest
      replicasPerPrimary: 2
      resourceGroupName: rg1
      shardCount: 2
      sku:
        capacity: 1
        family: P
        name: Premium
      staticIP: 192.168.0.5
      subnetId: /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/rg2/providers/Microsoft.Network/virtualNetworks/network1/subnets/subnet1
      zones:
        - '1'

The redisVersion property accepts either a specific version (e.g., “4.0”, “6.0”) or the value “Latest”. When set to “Latest”, Azure automatically provisions the newest stable Redis version available in the region. This ensures your cache receives new features and improvements without requiring manual version updates.

Beyond these examples

These snippets focus on specific Redis cache features: Premium SKU with VNet isolation and clustering, zone redundancy configuration, and Redis version management. They’re intentionally minimal rather than full caching solutions.

The examples reference pre-existing infrastructure such as Azure resource groups and VNet subnets for private deployment. They focus on configuring the cache rather than provisioning the surrounding network infrastructure.

To keep things focused, common Redis patterns are omitted, including:

  • Access key authentication controls (disableAccessKeyAuthentication)
  • Public network access restrictions (publicNetworkAccess)
  • Managed identity configuration (identity)
  • Redis configuration tuning (maxmemory-policy, persistence, notifications)
  • TLS version requirements (minimumTlsVersion)

These omissions are intentional: the goal is to illustrate how each Redis feature is wired, not provide drop-in caching modules. See the Azure Redis resource reference for all available configuration options.

Let's deploy Azure Redis Cache

Get started with Pulumi Cloud, then follow our quick setup guide to deploy this infrastructure.

Try Pulumi Cloud for FREE

Frequently Asked Questions

Availability Zones & High Availability
What's the difference between zones and zonalAllocationPolicy?
The zones property specifies which availability zones to use, while zonalAllocationPolicy controls how zones are allocated. Set zonalAllocationPolicy to Automatic for Azure to select zones, UserDefined to use your specified zones, or NoZones for non-zonal deployment.
How does zonalAllocationPolicy default if I don't specify it?
If you pass zones, it defaults to UserDefined. Otherwise, it defaults to Automatic in regions with zone support, or NoZones in regions without zone support.
How do I configure replicas for high availability?
Use replicasPerPrimary to specify the number of replicas created per primary node. This is shown in all examples with a value of 2.
Networking & VNet Deployment
How do I deploy Redis in a virtual network?
Set subnetId to the full resource ID of your VNet subnet (format: /subscriptions/{id}/resourceGroups/{rg}/providers/Microsoft.Network/virtualNetworks/{vnet}/subnets/{subnet}). Optionally specify staticIP for a fixed IP address.
Can I change the subnet or static IP after creation?
No, both subnetId and staticIP are immutable and cannot be changed after the Redis cache is created.
How do I control public network access?
Use publicNetworkAccess set to Enabled or Disabled. When Disabled, private endpoints become the exclusive access method.
Versioning & Configuration
How do I choose a Redis version?
Set redisVersion to a specific version like 4.0 or 6.0, or use Latest to automatically get the latest stable version. The default is latest.
What Redis configuration options are available?
Use redisConfiguration to set options like maxmemoryPolicy (e.g., allkeys-lru), backup settings (rdb-backup-enabled), and keyspace notifications. All examples configure maxmemoryPolicy.
Security & Access
What's the minimum TLS version I can require?
Use minimumTlsVersion to require clients to use TLS 1.0, 1.1, or 1.2 (or higher). All examples set this to 1.2.
Should I enable the non-SSL port?
The enableNonSslPort property enables port 6379 (non-SSL). It defaults to false for security. All examples set it to true, but consider your security requirements.
Can I disable access key authentication?
Yes, set disableAccessKeyAuthentication to true to disable authentication through access keys. The default is false.
Clustering & Scaling
How do I enable clustering for my Redis cache?
Use the Premium SKU (sku.name: Premium, sku.family: P) and set shardCount to the number of shards you want. All examples use shardCount: 2 with Premium tier.
What properties can't I change after creating the cache?
The following properties are immutable: location, name, staticIP, and resourceGroupName. Changing these requires recreating the resource.

Using a different cloud?

Explore database guides for other cloud providers: