The 10-Day .Net Aspire Challenge – Day 6: Redis Cache

Step-by-step guide on how to use the .Net Aspire Redis Cache component in Visual Studio.

Introduction

.Net Aspire framework is used to develop cloud and production-ready distributed applications. It consists of components to handle cloud-native concerns, such as Redis, Postgres, etc.

Prerequisites

Install .Net 8
Install Visual Studio 2022 version 17 or higher
.Net Aspire Workload
Container runtime such as Docker Desktop
10 Day .Net Aspire Challenge

Objectives

Learn how to create a starter project using .Net Aspire with the Redis Cache.

Github Sample: The solution structure is divided into the following projects

DotnetAspireChallenge.ApiService
DotnetAspireChallenge.AppHost
DotnetAspireChallenge.ServiceDefaults
DotnetAspireChallenge.Web

Getting Started

Step 1: Install the following NuGet package

Install the following Nuget package into the subsequent project “DotnetAspireChallenge.AppHost

dotnet add package Aspire.Hosting.Oracle

In the above project, register a server database and consume the Oracle connection using the following code.

“`csharp
var cache = builder.AddRedis(“cache”);

builder.AddProject<Projects.DotnetAspireChallenge_Web>(“webfrontend”)
.WithExternalHttpEndpoints()
.WithReference(cache);

### Step 2: Install another NuGet package

Install the following Nuget package into the subsequent project “**DotnetAspireChallenge.ApiService**”

dotnet add package Aspire.StackExchange.Redis.DistributedCache

then register the context into the Program.cs file as follows

csharp
builder.AddRedisDistributedCache(“cache”);

To add additional connection string properties using the JSON syntax

json
{
“Aspire”: {
“StackExchange”: {
“Redis”: {
“ConfigurationOptions”: {
“ConnectTimeout”: 5000,
“ConnectRetry”: 3
}
}
}
}
}

Congratulations..!! You’ve successfully integrated the Redis Cache component into the .Net Aspire project.

### Output Cache

The HTML or any static content can be cached as well in a web app or a Blazer app.

csharp
// Add the output cache
builder.AddRedisOutputCache();

// Build the app
var app = builder.Build();

// Add the middleware
app.UseOutputCache();

To cache a razor page, use the “OutputCache” attribute as follows

csharp
@page “/”
@attribute [OutputCache(Duration = 10)]

If your project requires to cache the response of APIs, you can use the same “OutputCache” attribute as follows

csharp
app.MapGet(“/products/{ProdId}”, (int ProdId) => $”The product ID is {ProdId}.”).CacheOutput();
app.MapGet(“/products/{ProdId}”, [OutputCache] (int ProdId) => $”The product ID is {ProdId}.”);
“`

Github Project

GitHub – ssukhpinder/DotnetAspireChallenge: 10 Day .Net Aspire Challenge

More Cheatsheets

Cheat Sheets — .Net

C# Programming🚀

Thank you for being a part of the C# community! Before you leave:

Follow us: Youtube | X | LinkedIn | Dev.to
Visit our other platforms: GitHub
More content at C# Programming

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.