TGViewer
DotNet | دات نت DotNet | دات نت @dotnetcode · 1.22K subscribers
Post #2993 707
ابزار Hybrid Cache در .NET 9: بهبود عملکرد و سادگی در مدیریت کش

در دنیای توسعه نرم‌افزار، کش‌ینگ یکی از مهم‌ترین تکنیک‌ها برای بهبود عملکرد و کاهش بار روی سرور است. در .NET 9، مایکروسافت ویژگی جدیدی به نام Hybrid Cache معرفی کرده است که ترکیبی از کش حافظه داخلی (In-Memory Cache) و کش توزیع‌شده (Distributed Cache) است. این ویژگی نه تنها عملکرد را بهبود می‌بخشد، بلکه مدیریت کش را نیز ساده‌تر می‌کند. در این مقاله، به بررسی Hybrid Cache، فواید آن، و نحوه استفاده از آن در یک سناریوی واقعی می‌پردازیم.

ابزار Hybrid Cache چیست؟
ابزار Hybrid Cache یک کتابخانه جدید در .NET 9 است که دو لایه کش را با هم ترکیب می‌کند:

کش L1 (کش حافظه داخلی): برای دسترسی سریع به داده‌ها در حافظه محلی.

کش L2 (کش توزیع‌شده): برای ذخیره داده‌ها در یک کش توزیع‌شده مانند Redis یا SQL Server، که برای محیط‌های توزیع‌شده و چند سروری مناسب است.

این ترکیب باعث می‌شود که داده‌ها ابتدا از کش حافظه داخلی خوانده شوند و در صورت عدم وجود، از کش توزیع‌شده بازیابی شوند. این رویکرد نه تنها تأخیر را کاهش می‌دهد، بلکه از بار اضافی روی کش توزیع‌شده نیز جلوگیری می‌کند.

فواید Hybrid Cache
1. بهبود عملکرد: با استفاده از کش حافظه داخلی، دسترسی به داده‌های پرکاربرد بسیار سریع‌تر می‌شود.

2. سادگی در مدیریت: دیگر نیازی به انتخاب بین کش حافظه داخلی و توزیع‌شده نیست. Hybrid Cache به طور خودکار این کار را انجام می‌دهد.

3. حمایت از تگ‌ها: می‌توانید داده‌ها را با تگ‌ها گروه‌بندی کنید و به راحتی آن‌ها را حذف یا به‌روزرسانی کنید.

4. محافظت در برابر Stampede: هنگامی که چندین درخواست همزمان برای داده‌ای که در کش وجود ندارد ارسال می‌شود، Hybrid Cache از اجرای چندین باره کد جلوگیری می‌کند و فقط یک درخواست را پردازش می‌کند.

5. پیکربندی انعطاف‌پذیر: می‌توانید زمان انقضا و سایر تنظیمات را برای هر دو لایه کش به صورت جداگانه تنظیم کنید.

نحوه استفاده از Hybrid Cache در .NET 9

نصب و پیکربندی
برای شروع، باید بسته NuGet مربوط به Hybrid Cache را نصب کنید:
dotnet add package Microsoft.Extensions.Caching.Hybrid  


سپس، سرویس Hybrid Cache را در برنامه خود اضافه کنید:
var builder = WebApplication.CreateBuilder(args);  

// افزودن سرویس Hybrid Cache
builder.Services.AddHybridCache(options =>
{
options.DefaultEntryOptions = new HybridCacheEntryOptions
{
Expiration = TimeSpan.FromMinutes(30), // زمان انقضا برای کش توزیع‌شده
LocalCacheExpiration = TimeSpan.FromMinutes(5) // زمان انقضا برای کش حافظه داخلی
};
});

// افزودن Redis به عنوان کش توزیع‌شده
builder.Services.AddStackExchangeRedisCache(options =>
{
options.Configuration = builder.Configuration.GetConnectionString("RedisConnectionString");
});



مثال عملی: کش کردن اطلاعات محصولات
فرض کنید یک API دارید که اطلاعات محصولات را از یک پایگاه داده بازیابی می‌کند. با استفاده از Hybrid Cache، می‌توانید این اطلاعات را کش کنید تا درخواست‌های بعدی سریع‌تر پاسخ داده شوند.

public class ProductService  
{
private readonly HybridCache _cache;

public ProductService(HybridCache cache)
{
_cache = cache;
}

public async Task<Product> GetProductAsync(int productId, CancellationToken cancellationToken = default)
{
var cacheKey = $"product-{productId}";

return await _cache.GetOrCreateAsync(
cacheKey,
async cancel =>
{
// شبیه‌سازی بازیابی اطلاعات از پایگاه داده
return await FetchProductFromDatabaseAsync(productId, cancel);
},
cancellationToken: cancellationToken
);
}

private async Task<Product> FetchProductFromDatabaseAsync(int productId, CancellationToken cancellationToken)
{
// شبیه‌سازی یک عملیات زمان‌بر
await Task.Delay(1000, cancellationToken);
return new Product { Id = productId, Name = "Sample Product", Price = 99.99 };
}
}
More from @dotnetcode
  1. Sep 16, 2026ورک‌شاپ «AI Agents in C# (MAF)» در این ورک‌شاپ به بررسی امکانات جدید برنامه‌نویسی با کتابخ…
  2. Jul 10, 2026#مهندس_فکر_کن قسمت:4️⃣ 🎯مصاحبه‌کننده: ءCache Stampede چیست؟ فرض کن یک کلید در Cache داری:…
  3. Jun 12, 20261. Indexes منابع پیشنهادی این چالش که برای من اینها جذاب بوده و هست. A. Designing Data-Int…
  4. Jun 9, 2026آینده هوش مصنوعی و مهندسی کامپیوتر هوش مصنوعی مهندسی را نابود نمی‌کند، اما در سکوت در حال…
  5. Jun 4, 2026تحولی بزرگ در دنیای سی‌شارپ: ویژگی هیجان‌انگیز Union Types در C# 15! بالاخره یکی از جذاب‌ت…
  6. Feb 8, 2026👩‍💻 پستگرس رو ۲.۵ برابر سریع‌تر کن! تصور کن مغز متفکر دیتابیست (Parser) رو بدی دست هوش م…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →