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

Immutability & Resource Lifecycle
What properties can't be changed after creating a Redis cache?
Four properties are immutable: location, name, staticIP, and resourceGroupName. Changing any of these requires recreating the resource.
How does automatic zonal allocation work?
When zonalAllocationPolicy isn’t specified, it defaults to UserDefined if you provide zones, Automatic in regions with zone support, or NoZones in regions without zone support. For predictable behavior, explicitly set zonalAllocationPolicy.
High Availability & Networking
How do I configure high availability with replicas and sharding?
For Premium SKU caches, set replicasPerPrimary (number of replicas per primary) and shardCount (number of shards). Examples show configurations with replicasPerPrimary: 2 and shardCount: 2.
How do I deploy Redis in a virtual network?
Set subnetId to the full resource ID of your subnet. Optionally specify staticIP for a fixed IP address within the VNet.
What's the difference between zones and zonalAllocationPolicy?
zones specifies which availability zones to use (e.g., ["1"]). zonalAllocationPolicy controls allocation behavior: UserDefined uses your zones list, Automatic lets Azure choose zones, and NoZones creates a non-zonal cache.
Security & Access Control
What are the default security settings?
By default, enableNonSslPort is false (port 6379 disabled), disableAccessKeyAuthentication is false (access keys enabled), and redisVersion is ’latest’. TLS version and public network access have no defaults and must be configured explicitly.
How do I restrict access to private endpoints only?
Set publicNetworkAccess to Disabled. When disabled, private endpoints become the exclusive access method.
What TLS versions are supported?
Configure minimumTlsVersion to require clients to use a specified TLS version or higher. Supported values include ‘1.0’, ‘1.1’, and ‘1.2’.
Versions & Updates
What Redis versions can I deploy?
Supported versions are 4.0 and 6.0. Use redisVersion: "Latest" for the latest stable version (currently 6.0), or specify a major version like "4". The default is ’latest'.
What's the difference between Stable and Preview update channels?
The updateChannel property controls monthly Redis updates. Preview receives updates at least 4 weeks ahead of Stable. The default is ‘Stable’.

Using a different cloud?

Explore database guides for other cloud providers: