10-Day .Net Aspire Challenge: Day 6?—?Redis Cache

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

10 Day?.Net Aspire Challenge Edit descriptionsinghsukhpinder.medium.com

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 & Best Practices

Cheat Sheets?—?.Net singhsukhpinder.medium.com

30 Day?.Net Challenge singhsukhpinder.medium.com

Best Practices singhsukhpinder.medium.com

Design Patterns?—?.Net singhsukhpinder.medium.com

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



要查看或添加评论,请登录

Sukhpinder Singh的更多文章

社区洞察

其他会员也浏览了