CodeShot
Redis1 دقیقه مطالعه

استفاده از Redis برای Caching چطور است؟

استفاده از Redis به‌عنوان یک Cache توزیع‌شده (Distributed Cache) خارج از پروسه برنامه، مشترک بین چند Instance/سرور.

چرا مهم است؟

برخلاف Memory Cache که هر Instance کش جدای خودش را دارد، Redis یک نقطه مرکزی است که همه Instanceهای برنامه از یک کش مشترک استفاده می‌کنند — ضروری برای مقیاس‌پذیری افقی.

تعریف

Redis یک دیتابیس Key-Value درون‌حافظه‌ای (In-Memory) است که علاوه بر ذخیره‌سازی سریع، معمولاً به‌عنوان لایه Distributed Cache جلوی دیتابیس اصلی قرار می‌گیرد.

مثال (دات‌نت — IDistributedCache)

builder.Services.AddStackExchangeRedisCache(options =>
    options.Configuration = "localhost:6379");

var cached = await _cache.GetStringAsync("categories");
if (cached is null)
{
    var categories = await _repository.GetCategoriesAsync();
    await _cache.SetStringAsync("categories", JsonSerializer.Serialize(categories),
        new DistributedCacheEntryOptions { AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(10) });
    return categories;
}
return JsonSerializer.Deserialize<List<Category>>(cached)!;

الگوی Cache-Aside

رایج‌ترین الگو: اول از Cache بخوان؛ اگر نبود، از دیتابیس بخوان و در Cache بنویس؛ برای Update، رکورد دیتابیس را به‌روز کن و همان Key را از Cache حذف کن (Invalidate)، نه اینکه فراموشش کنی.

اشتباه رایج

❌ فراموش‌کردن Invalidate کردن Cache بعد از Update داده در دیتابیس — کاربر داده قدیمی (Stale) را تا زمان انقضای طبیعی Cache می‌بیند؛ هر مسیر Write باید Key مرتبط در Cache را هم پاک یا به‌روز کند.

منبع و مطالعه بیشتر

خلاصه

Redis به‌عنوان Distributed Cache بین چند Instance برنامه مشترک است، برخلاف Memory Cache محلی. با الگوی Cache-Aside کار کنید و همیشه بعد از Update داده، Cache مرتبط را Invalidate کنید. مرجع کامل: Distributed caching در ASP.NET Core، Microsoft Learn.

این مطلب مفید بود؟
نشان کردن
مشاهده در Concept Hub ←