কম্পিউটার টিউটোরিয়াল

.NET 8/9/10-এ Redis ইন্টিগ্রেশন: একটি কমপ্লিট স্টেপ-বাই-স্টেপ টিউটোরিয়াল

Redis একটি হাই-পারফরম্যান্স, ইন-মেমরি ডেটা স্টোর যা ক্যাশিং, সেশন ম্যানেজমেন্ট, রিয়েল-টাইম অ্যানালিটিক্স, এবং আরও অনেক কিছুর জন্য ব্যাপকভাবে ব্যবহৃত হয়। এই গাইডে, আমরা এক্সপ্লোর করব .NET অ্যাপ্লিকেশনের সাথে Redis ইন্টিগ্রেট করার পদ্ধতি StackExchange.Redis ব্যবহার করে, যা .NET-এর জন্য সবচেয়ে পপুলার Redis ক্লায়েন্টের মধ্যে একটি।

১. পূর্বশর্ত

শুরু করার আগে, নিশ্চিত করুন আপনার কাছে আছে:

  • .NET 8/9/10 SDK ইনস্টল্ড

  • Visual Studio বা VS Code

  • Redis সার্ভার লোকালি রান করছে বা Docker-এর মাধ্যমে

আপনি Docker দিয়ে লোকালি Redis রান করতে পারেন:

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

.NET 8/9/10-এ Redis ইন্টিগ্রেশন: একটি কমপ্লিট স্টেপ-বাই-স্টেপ টিউটোরিয়াল

২. Redis ক্লায়েন্ট ইনস্টল করা

প্রজেক্ট → রাইট ক্লিক → Manage NuGet → ইনস্টল:

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

স্টেপ ৩: 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();

স্টেপ ৪: মডেল + 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; } }

স্টেপ ৫: ডাটাবেস তৈরি (PostgreSQL)

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

স্টেপ ৬: কন্ট্রোলার তৈরি

👉 Controllers ফোল্ডার → Add → Controller → API Controller

👉 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 }); } }

Workflow:

  1. প্রথমে Redis ক্যাশ চেক করুন।

  2. ক্যাশ মিস হলে, DB থেকে ফেচ করুন।

  3. এক্সপায়ারেশনসহ ডেটা Redis-এ স্টোর করুন।

৫. অ্যাডভান্সড Redis ব্যবহার

  • Hashes: স্ট্রাকচারড ডেটা স্টোর:

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

Lists: কিউ বা মেসেজ লিস্ট ইমপ্লিমেন্ট:

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!"); 

৬. বেস্ট প্র্যাকটিস

  • ConnectionMultiplexer সিঙ্গলটন হিসেবে ব্যবহার করুন মাল্টিপল কানেকশন এড়াতে।

  • Redis ব্যবহার করুন মূলত একটি ক্যাশ হিসেবে, প্রাইমারি ডাটাবেস হিসেবে নয়।

  • ক্যাশড কীগুলোর জন্য এক্সপায়ারেশন (TTL) সেট করুন মেমরি সমস্যা প্রতিবন্ধক করতে।

🧪 স্টেপ ৭: রান & টেস্ট

👉 প্রজেক্ট রান করুন
👉 ব্রাউজার / Postman-এ কল করুন :

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

.NET 8/9/10-এ Redis ইন্টিগ্রেশন: একটি কমপ্লিট স্টেপ-বাই-স্টেপ টিউটোরিয়াল


  1. পান্ডাসে notnull() দিয়ে নাল মান চেক করা

  2. pyDash: ওয়েব-ভিত্তিক লিনাক্স পারফরম্যান্স মনিটরিং টুল

  3. পাইথনে চেসবোর্ডের সেলের রঙ (সাদা/কালো) নির্ণয়

  4. Redis Revolution: তিন উদ্ভাবক বায়োটেক, মেডটেক, এবং রোবটিক্সে Redis ব্যবহার করে ব্রেকথ্রু অর্জন করল