Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Redis

रेडिस को .NET 8/9/10 के साथ एकीकृत करना:एक व्यापक चरण-दर-चरण ट्यूटोरियल

<पी> रेडिस एक उच्च-प्रदर्शन, इन-मेमोरी डेटा स्टोर है जिसका व्यापक रूप से कैशिंग, सत्र प्रबंधन, रीयल-टाइम एनालिटिक्स और बहुत कुछ के लिए उपयोग किया जाता है। इस गाइड में, हम यह पता लगाएंगे कि StackExchange.Redis का उपयोग करके Redis को .NET एप्लिकेशन के साथ कैसे एकीकृत किया जाए। , .NET के लिए सबसे लोकप्रिय Redis क्लाइंट में से एक।

1. पूर्वावश्यकताएँ

<पी> शुरू करने से पहले, सुनिश्चित करें कि आपके पास:

है
  • <पी> .NET 8/9/10 एसडीके स्थापित

  • <पी> विज़ुअल स्टूडियो या वीएस कोड
  • <पी> रेडिस सर्वर स्थानीय स्तर पर या डॉकर

    के माध्यम से चल रहा है
<पी> आप रेडिस को डॉकर के साथ स्थानीय रूप से चला सकते हैं:

docker run --name redis -p 6379:6379 -d redis
<पी> रेडिस को .NET 8/9/10 के साथ एकीकृत करना:एक व्यापक चरण-दर-चरण ट्यूटोरियल

2. रेडिस क्लाइंट स्थापित करना

<पी> प्रोजेक्ट → राइट क्लिक करें → NuGet प्रबंधित करें → इंस्टॉल करें:

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

चरण 3:प्रोग्राम.सीएस सेटअप

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:नियंत्रक बनाएं

<पी> 👉 नियंत्रक फ़ोल्डर → जोड़ें → नियंत्रक → एपीआई नियंत्रक

👉 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
 });
 }
}
<पी> वर्कफ़्लो:
  1. <पी> पहले रेडिस कैश की जाँच करें।

  2. <पी> यदि कैश छूट जाए, तो DB से प्राप्त करें।

  3. <पी> Redis में समाप्ति तिथि के साथ डेटा संग्रहीत करें।

5. उन्नत रेडिस उपयोग

  • <पी> हैश: संरचित डेटा संग्रहित करें:

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");
<पी> पब/उप: वास्तविक समय सूचनाएं:

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

6. सर्वोत्तम प्रथाएँ

  • <पी> कनेक्शनमल्टीप्लेक्सर का उपयोग करें एकाधिक कनेक्शन से बचने के लिए एक सिंगलटन के रूप में।

  • <पी> रेडिस का उपयोग मुख्य रूप से कैश के रूप में करें , प्राथमिक डेटाबेस नहीं।

  • <पी> समाप्ति (टीटीएल) सेट करें स्मृति समस्याओं को रोकने के लिए कैश्ड कुंजियों के लिए।

🧪 चरण 7:चलाएँ और परीक्षण करें

<पी> 👉प्रोजेक्ट चलाएँ
👉 ब्राउजर/पोस्टमैन এ कॉल :

https://localhost:xxxx/api/product/1
<पी> रेडिस को .NET 8/9/10 के साथ एकीकृत करना:एक व्यापक चरण-दर-चरण ट्यूटोरियल


  1. पायथन में पास्कल के त्रिभुज की nवीं पंक्ति खोजने का कार्यक्रम पायथन में पास्कल के त्रिभुज की nवीं पंक्ति खोजने का कार्यक्रम

    मान लीजिए कि हमारे पास एक संख्या n है, हमें पास्कल त्रिभुज की nवीं (0-अनुक्रमित) पंक्ति ज्ञात करनी है। जैसा कि हम जानते हैं कि पास्कल का त्रिभुज इस प्रकार बनाया जा सकता है - शीर्ष पंक्ति में, 1 की एक सरणी है। उपरोक्त संख्या को ऊपर और बाईं ओर ऊपर और दाईं ओर जोड़कर अगली पंक्ति बनाई जाती है। तो कुछ

  1. स्विफ्ट में स्टैटिक वेरिएबल का उपयोग कहां और कैसे करें? स्विफ्ट में स्टैटिक वेरिएबल का उपयोग कहां और कैसे करें?

    इससे पहले कि हम देखें कि स्टैटिक वेरिएबल का उपयोग कहाँ और कैसे किया जाता है, आइए पहले यह समझें कि स्विफ्ट में स्टैटिक वेरिएबल क्या है? स्थिर चर स्टेटिक वेरिएबल्स वे वेरिएबल्स हैं जिनके मान किसी वर्ग के सभी इंस्टेंस या ऑब्जेक्ट के बीच साझा किए जाते हैं। जब हम किसी वेरिएबल को स्टैटिक के रूप में परिभा

  1. मैं पाइथन प्रोग्राम के लिए एक साधारण UI में रीयल-टाइम ग्राफ़ कैसे प्रदर्शित करूं? मैं पाइथन प्रोग्राम के लिए एक साधारण UI में रीयल-टाइम ग्राफ़ कैसे प्रदर्शित करूं?

    पायथन प्रोग्राम के लिए एक साधारण UI में रीयल-टाइम ग्राफ़ प्रदर्शित करने के लिए, हम समोच्च प्लॉट को चेतन कर सकते हैं। कदम फिगर साइज सेट करें और सबप्लॉट्स के बीच और आसपास पैडिंग को एडजस्ट करें। आकार 10×10 आयाम का एक यादृच्छिक डेटा बनाएं। सबप्लॉट्स () . का उपयोग करके एक फिगर और सबप्लॉट का एक स