Redis
 Computer >> コンピューター >  >> プログラミング >> Redis

Redis と .NET 8/9/10 の統合:包括的なステップバイステップのチュートリアル

Redis は、キャッシュ、セッション管理、リアルタイム分析などに広く使用されている高性能のインメモリ データ ストアです。このガイドでは、StackExchange.Redis を使用して Redis を .NET アプリケーションと統合する方法を説明します。 .NET 用の最も人気のある Redis クライアントの 1 つです。

1.前提条件

始める前に、次のものが揃っていることを確認してください。

  • .NET 8/9/10 SDK インストールされました

  • ビジュアル スタジオ またはVS コード

  • Redis サーバー ローカルまたは Docker 経由で実行

Docker を使用して Redis をローカルで実行できます。

docker run --name redis -p 6379:6379 -d redis

Redis と .NET 8/9/10 の統合:包括的なステップバイステップのチュートリアル

2. Redis クライアントのインストール

プロジェクト → 右クリック → NuGet の管理 → インストール:

Microsoft.EntityFrameworkCore
Npgsql.EntityFrameworkCore.PostgreSQL
Microsoft.Extensions.Caching.StackExchangeRedis

ステップ 3:Program.cs のセットアップ

using Microsoft.EntityFrameworkCore;
var builder = WebApplication.CreateBuilder(args);
// PostgreSQL
builder.Services.AddDbContext<AppDbContext>(options =>
 options.UseNpgsql("Host=localhost;Port=5432;Database=testdb;Username=postgres;Password=1234"));
// Redis
builder.Services.AddStackExchangeRedisCache(options =>
{
 options.Configuration = "localhost:6379";
});
builder.Services.AddControllers();
var app = builder.Build();
app.MapControllers();
app.Run();

ステップ 4:モデル + DbContext

👉 Product.cs

public class Product
{
 public int Id { get; set; }
 public string Name { get; set; }
}

👉 AppDbContext.cs

using Microsoft.EntityFrameworkCore;
public class AppDbContext : DbContext
{
 public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) {}
 public DbSet<Product> Products { get; set; }
}

ステップ 5:データベースの作成 (PostgreSQL)

CREATE TABLE "Products" (
 "Id" SERIAL PRIMARY KEY,
 "Name" TEXT
);
INSERT INTO "Products" ("Name") VALUES ('Laptop'), ('Mobile');

ステップ 6:コントローラの作成

👉 コントローラーフォルダー → 追加 → コントローラー → API コントローラー

👉 ProductController.cs

using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Caching.Distributed;
using System.Text.Json;
[ApiController]
[Route("api/[controller]")]
public class ProductController : ControllerBase
{
 private readonly AppDbContext _context;
 private readonly IDistributedCache _cache;
 public ProductController(AppDbContext context, IDistributedCache cache)
 {
 _context = context;
 _cache = cache;
 }
 [HttpGet("{id}")]
 public async Task<IActionResult> Get(int id)
 {
 string cacheKey = $"product_{id}";
 // 🔴 Redis check
 var cachedData = await _cache.GetStringAsync(cacheKey);
 if (cachedData != null)
 {
 var product = JsonSerializer.Deserialize<Product>(cachedData);
 return Ok(new
 {
 source = "Redis",
 data = product
 });
 }
 // 🗄️ DB call
 var productFromDb = await _context.Products.FindAsync(id);
 if (productFromDb == null)
 return NotFound();
 // 🔥 Save to Redis
 var options = new DistributedCacheEntryOptions()
 .SetAbsoluteExpiration(TimeSpan.FromMinutes(5));
 await _cache.SetStringAsync(
 cacheKey,
 JsonSerializer.Serialize(productFromDb),
 options
 );
 return Ok(new
 {
 source = "Database",
 data = productFromDb
 });
 }
}

ワークフロー:

<オル>
  • まず Redis キャッシュを確認してください。

  • キャッシュミスの場合は、DB からフェッチします。

  • 有効期限付きでデータを Redis に保存します。

  • 5.高度な Redis の使用法

    • ハッシュ: 構造化データを保存する:

    await _db.HashSetAsync("user:1", new HashEntry[]
    {
     new HashEntry("name", "Shafaet"),
     new HashEntry("age", 26)
    });

    リスト: キューまたはメッセージ リストを実装します。

    await _db.ListRightPushAsync("messages", "Hello World");
    var msg = await _db.ListLeftPopAsync("messages");

    Pub/Sub: リアルタイム通知:

    var sub = _redis.GetSubscriber();
    await sub.SubscribeAsync("channel", (ch, val) => Console.WriteLine(val));
    await sub.PublishAsync("channel", "Hello subscribers!");
    

    6.ベストプラクティス

    • ConnectionMultiplexer を使用する 複数の接続を避けるためにシングルトンとして使用します。

    • Redis は主にキャッシュとして使用します。 、プライマリ データベースではありません。

    • 有効期限 (TTL) を設定します。 メモリの問題を防ぐためにキャッシュされたキーを使用します。

    🧪 ステップ 7:実行とテスト

    👉 プロジェクトを実行する
    👉 ブラウザ / 郵便配達員 এ 電話 :

    https://localhost:xxxx/api/product/1

    Redis と .NET 8/9/10 の統合:包括的なステップバイステップのチュートリアル


    1. 切断、更新、クラッシュが発生しても持続する回復力のある LLM ストリームを作成する

      私たちが構築しているもの この記事では、簡単に存続できる非常に耐久性の高い LLM ストリームを構築します。 ネットワーク障害 ページが更新されます ウェブサイトの閉鎖 ノートパソコンの蓋を閉める ボーナス:複数のデバイス (携帯電話やラップトップなど) で同時に同じストリームを表示できます。 . ストリームを中断しようとしても、接続が切断されている間はバックグラウンドで継続され、戻った後もスムーズに継続されます。これは信じられないほどです。 ユーザーエクスペリエンス。 耐久性のある LLM ストリームのデモ 👇 インスピレーション AI を使用して構築する場合、AI 応答を

    2. Upstash Prod Pack:月額 200 ドルのエンタープライズ グレードの Redis

      昨年、Prod Pack と呼ばれる Redis の新しいアドオンを導入しました。 . Prod Pack は、有料の Redis データベース (または現在は QStash インスタンス) 用の月額 200 ドルのアドオンです。既存の従量課金制プランまたは固定プランを維持し、Prod Pack によって本番環境に対応した機能が追加されます。 Prod Pack と Enterprise の違い:Prod Pack はデータベースごと、Enterprise はアカウントごとです。データベースが 10 個あり、重要なトラフィックを処理できるデータベースが 2 つだけの場合は、その 2 つだけ