Redis एक हाई-परफॉरमेंस, इन-मेमोरी डेटा स्टोर है जिसका व्यापक रूप से कैशिंग, सेशन मैनेजमेंट, रियल-टाइम एनालिटिक्स और अधिक के लिए उपयोग किया जाता है। इस गाइड में, हम StackExchange.Redis का उपयोग करके Redis को .NET एप्लिकेशन के साथ इंटीग्रेट करने का तरीका देखेंगे, जो .NET के लिए सबसे लोकप्रिय Redis क्लाइंट्स में से एक है।
1. पूर्वापेक्षाएँ
शुरू करने से पहले, सुनिश्चित करें कि आपके पास है:
.NET 8/9/10 SDK इंस्टॉल्ड
Visual Studio या VS Code
Redis सर्वर स्थानीय रूप से या Docker के माध्यम से चल रहा है
आप Docker के साथ स्थानीय रूप से Redis चला सकते हैं:
docker run --name redis -p 6379:6379 -d redis

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: कंट्रोलर बनाएं
👉 कंट्रोलर्स फोल्डर → Add → कंट्रोलर → 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 चेक
var cachedData = await _cache.GetStringAsync(cacheKey);
if (cachedData != null) {
var product = JsonSerializer.Deserialize<Product>(cachedData);
return Ok(new { source = "Redis", data = product });
}
// 🗄️ DB कॉल
var productFromDb = await _context.Products.FindAsync(id);
if (productFromDb == null) return NotFound();
// 🔥 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");
पब/सब: रियल-टाइम नोटिफिकेशन:
var sub = _redis.GetSubscriber();
await sub.SubscribeAsync("channel", (ch, val) => Console.WriteLine(val));
await sub.PublishAsync("channel", "Hello subscribers!");
6. सर्वोत्तम अभ्यास
मल्टीपल कनेक्शन से बचने के लिए ConnectionMultiplexer को सिंगलटन के रूप में उपयोग करें।
Redis को मुख्य रूप से कैश के रूप में उपयोग करें, प्राइमरी डेटाबेस के रूप में नहीं।
कैश्ड कुंजियों के लिए एक्सपायरेशन (TTL) सेट करें ताकि मेमोरी समस्याएं न हों।
🧪 चरण 7: चलाएं और टेस्ट करें
👉 प्रोजेक्ट चलाएं
👉 ब्राउज़र / Postman में कॉल करें:
https://localhost:xxxx/api/product/1
