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

.NET 8/9/10 এর সাথে Redis সংহত করা:একটি ব্যাপক ধাপে ধাপে টিউটোরিয়াল

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

-এর জন্য সবচেয়ে জনপ্রিয় Redis ক্লায়েন্টদের মধ্যে একটি

1. পূর্বশর্ত

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

  • .NET 8/9/10 SDK ইনস্টল করা হয়েছে

  • ভিজ্যুয়াল স্টুডিও অথবা VS কোড

  • রিডিস সার্ভার স্থানীয়ভাবে বা ডকারের মাধ্যমে চলছে

আপনি ডকারের সাথে স্থানীয়ভাবে রেডিস চালাতে পারেন:

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

.NET 8/9/10 এর সাথে Redis সংহত করা:একটি ব্যাপক ধাপে ধাপে টিউটোরিয়াল

2. রেডিস ক্লায়েন্ট ইনস্টল করা হচ্ছে

প্রকল্প → রাইট ক্লিক → নুগেট পরিচালনা করুন → ইনস্টল করুন:

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

কর্মপ্রবাহ:

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

  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. সর্বোত্তম অভ্যাস

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

  • Redis প্রাথমিকভাবে ক্যাশে হিসেবে ব্যবহার করুন , প্রাথমিক ডাটাবেস নয়।

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

🧪 ধাপ 7:চালান এবং পরীক্ষা করুন

👉 প্রকল্প চালান
👉 ব্রাউজার / পোস্টম্যান এ কল :

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

.NET 8/9/10 এর সাথে Redis সংহত করা:একটি ব্যাপক ধাপে ধাপে টিউটোরিয়াল


  1. হোয়াটসঅ্যাপের মতো অ্যান্ড্রয়েড বিজ্ঞপ্তিগুলি কীভাবে গ্রুপ করবেন?

  2. C++ এ এককভাবে লিঙ্কযুক্ত তালিকায় সমস্ত প্রধান নোডের পণ্য

  3. কিভাবে প্রোগ্রাম্যাটিকভাবে অ্যান্ড্রয়েড ডিভাইস ব্র্যান্ড নাম পেতে?

  4. কিভাবে matplotlib এ অক্ষ গুণকের মান সেট করবেন?