# AzureManagedRedisExtensions Methods

- Package: [Aspire.Hosting.Azure.Redis](/reference/api/csharp/aspire.hosting.azure.redis.md)
- Type: [AzureManagedRedisExtensions](/reference/api/csharp/aspire.hosting.azure.redis/azuremanagedredisextensions.md)
- Kind: `Methods`
- Members: `4`

Provides extension methods for adding the Azure Managed Redis resources to the application model.

## AddAzureManagedRedis(IDistributedApplicationBuilder, string)

- Name: `AddAzureManagedRedis(IDistributedApplicationBuilder, string)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<AzureManagedRedisResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.Redis/AzureManagedRedisExtensions.cs#L53-L60)

Adds an Azure Managed Redis resource to the application model.

```csharp
public static class AzureManagedRedisExtensions
{
    public static IResourceBuilder<AzureManagedRedisResource> AddAzureManagedRedis(
        this IDistributedApplicationBuilder builder,
        string name)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IDistributedApplicationBuilder`)
  The builder for the distributed application.
- `name` (`string`)
  The name of the resource.

## Returns

`IResourceBuilder<AzureManagedRedisResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1` builder.

## Remarks

By default, the Azure Managed Redis resource is configured to use Microsoft Entra ID (Azure Active Directory) for authentication. This requires changes to the application code to use an azure credential to authenticate with the resource. See https://github.com/Azure/Microsoft.Azure.StackExchangeRedis for more information. The following example creates an Azure Managed Redis resource and referencing that resource in a .NET project.

```csharp
var builder = DistributedApplication.CreateBuilder(args);

var cache = builder.AddAzureManagedRedis("cache");

builder.AddProject<Projects.ProductService>()
    .WithReference(cache);

builder.Build().Run();
```

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## RunAsContainer(IResourceBuilder<AzureManagedRedisResource>, Action<IResourceBuilder<RedisResource>>)

- Name: `RunAsContainer(IResourceBuilder<AzureManagedRedisResource>, Action<IResourceBuilder<RedisResource>>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<AzureManagedRedisResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.Redis/AzureManagedRedisExtensions.cs#L93-L109)

Configures an Azure Managed Redis resource to run locally in a container.

```csharp
public static class AzureManagedRedisExtensions
{
    public static IResourceBuilder<AzureManagedRedisResource> RunAsContainer(
        this IResourceBuilder<AzureManagedRedisResource> builder,
        Action<IResourceBuilder<RedisResource>>? configureContainer = null)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<AzureManagedRedisResource>`)
  The Azure Managed Redis resource builder.
- `configureContainer` (`Action<IResourceBuilder<RedisResource>>`) `optional`
  Callback that exposes underlying container to allow for customization.

## Returns

`IResourceBuilder<AzureManagedRedisResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1` builder.

## Remarks

The following example creates an Azure Managed Redis resource that runs locally in a Redis container and referencing that resource in a .NET project.

```csharp
var builder = DistributedApplication.CreateBuilder(args);

var cache = builder.AddAzureManagedRedis("cache")
    .RunAsContainer();

builder.AddProject<Projects.ProductService>()
    .WithReference(cache);

builder.Build().Run();
```

## ATS metadata

### ATS export

- Available to Polyglot AppHosts through the Aspire Type System.

## WithAccessKeyAuthentication(IResourceBuilder<AzureManagedRedisResource>)

- Name: `WithAccessKeyAuthentication(IResourceBuilder<AzureManagedRedisResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<AzureManagedRedisResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.Redis/AzureManagedRedisExtensions.cs#L136-L155)

Configures the resource to use access key authentication for Azure Managed Redis.

```csharp
public static class AzureManagedRedisExtensions
{
    public static IResourceBuilder<AzureManagedRedisResource> WithAccessKeyAuthentication(
        this IResourceBuilder<AzureManagedRedisResource> builder)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<AzureManagedRedisResource>`)
  The Azure Managed Redis resource builder.

## Returns

`IResourceBuilder<AzureManagedRedisResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1` builder.

## Remarks

The following example creates an Azure Managed Redis resource that uses access key authentication.

```csharp
var builder = DistributedApplication.CreateBuilder(args);

var cache = builder.AddAzureManagedRedis("cache")
    .WithAccessKeyAuthentication();

builder.AddProject<Projects.ProductService>()
    .WithReference(cache);

builder.Build().Run();
```

## ATS metadata

### Ignored by ATS

- Excluded from automatic Polyglot export.

## WithAccessKeyAuthentication(IResourceBuilder<AzureManagedRedisResource>, IResourceBuilder<IAzureKeyVaultResource>)

- Name: `WithAccessKeyAuthentication(IResourceBuilder<AzureManagedRedisResource>, IResourceBuilder<IAzureKeyVaultResource>)`
- Modifiers: `extension`
- Returns: `IResourceBuilder<AzureManagedRedisResource>`
- Source: [GitHub](https://github.com/microsoft/aspire/blob/cbc352350f1a9bafbaff10d14a2c8de4ac186a48/src/Aspire.Hosting.Azure.Redis/AzureManagedRedisExtensions.cs#L182-L199)

Configures the resource to use access key authentication for Azure Managed Redis.

```csharp
public static class AzureManagedRedisExtensions
{
    public static IResourceBuilder<AzureManagedRedisResource> WithAccessKeyAuthentication(
        this IResourceBuilder<AzureManagedRedisResource> builder,
        IResourceBuilder<IAzureKeyVaultResource> keyVaultBuilder)
    {
        // ...
    }
}
```

## Parameters

- `builder` (`IResourceBuilder<AzureManagedRedisResource>`)
  The Azure Managed Redis resource builder.
- `keyVaultBuilder` (`IResourceBuilder<IAzureKeyVaultResource>`)
  The Azure Key Vault resource builder where the connection string used to connect to this AzureManagedRedisResource will be stored.

## Returns

`IResourceBuilder<AzureManagedRedisResource>` -- A reference to the `ApplicationModel.IResourceBuilder`1` builder.

## ATS metadata

### Ignored by ATS

- Excluded from automatic Polyglot export.
