paint-brush
The 10-Day .Net Aspire Challenge - Day 6: Redis Cacheby@ssukhpinder

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

by Sukhpinder SinghSeptember 3rd, 2024
Read on Terminal Reader
Read this story w/o Javascript
tldt arrow

Too Long; Didn't Read

The.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. The HTML or any static content can be cached as well in a web app or a Blazer app. The solution structure is divided into the following projects: DotnetAspireChallenge.Web, Dotnet aspire.AppHost and Dotnet Aspire.Web.
featured image - The 10-Day .Net Aspire Challenge - Day 6: Redis Cache
Sukhpinder Singh HackerNoon profile picture

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

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.

    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

    builder.AddRedisDistributedCache("cache");

To add additional connection string properties using the JSON syntax

    {
      "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.

    // 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

    @page "/"
    @attribute [OutputCache(Duration = 10)]

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

    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