TGViewer
C# Geeks (.NET) C# Geeks (.NET) @csharpgeeks · 550 subscribers
Post #588 254
وصل کردن همه‌چیز به هم (Wiring It All Together) 🔌

در نهایت باید این سرویس‌ها را داخل DI container ثبت کنیم:
builder.Services.AddSingleton<IConnectionMultiplexer>(sp =>
ConnectionMultiplexer.Connect("<REDIS_CONNECTION_STRING>"));

// Register HybridCache (defaults generally work fine for L1)
builder.Services.AddHybridCache();

// Register our invalidation services
builder.Services.AddSingleton<ICacheInvalidator, RedisCacheInvalidator>();
builder.Services.AddHostedService<CacheInvalidationService>();

حالا وقتی Node A متد
InvalidateAsync("user:123")
را صدا بزند، Redis این پیام را به Node B، Node C و بقیه می‌فرستد. همه‌ی آن‌ها متد
hybridCache.RemoveAsync("user:123")
را اجرا می‌کنند و تضمین می‌شود که درخواست بعدی داده‌ی تازه را از منبع اصلی (یا از L2 مشترک) بگیرد. 🔄✨

یک راه بهتر: FusionCache 🧠🔥

اگر ساختن backplane اختصاصی حس «reinventing the wheel» به شما می‌دهد، بهتر است نگاهی به FusionCache بیندازید.

ءFusionCache یک کتابخانه‌ی بالغ و battle-tested است که سال‌هاست دقیقاً همین مشکل را حل کرده. این کتابخانه یک backplane داخلی دارد که به صورت خودکار Pub/Sub را مدیریت می‌کند.

حتی بهتر از آن: FusionCache اخیراً یک پیاده‌سازی از abstract class مربوط به HybridCache اضافه کرده است. یعنی می‌توانید تقریباً بدون تغییر زیاد در کد فعلی، آن را جایگزین کنید. 😍
// Using FusionCache's implementation of HybridCache
builder.Services.AddFusionCache()
.WithBackplane(
new RedisBackplane(new RedisBackplaneOptions { Configuration = "<REDIS_CONNECTION_STRING>" }))
.AsHybridCache();

جمع‌بندی 📝

ءHybridCache یک اضافه‌شدن بسیار قدرتمند به اکوسیستم NET. است و عملاً مزایای IMemoryCache و IDistributedCache را با هم ترکیب می‌کند. اما در سناریوهای multi-node که نیاز به consistency بالا دارند، هنوز به یک مکانیزم برای همگام‌سازی کش‌های محلی نیاز دارید.

ءRedis Pub/Sub یک راه‌حل سبک و مؤثر برای این مشکل ارائه می‌دهد. 📡

با پیاده‌سازی یک «bus» ساده برای پیام‌های invalidation، به بهترین حالت ممکن می‌رسید:
هم performance فوق‌العاده‌ی کش محلی را دارید، هم consistency سیستم توزیع‌شده را. ⚡️🌍

موفق باشید😉🚀

🔖هشتگ‌ها:
#DotNet #HybridCache #Redis #DistributedSystems #Caching #SystemDesign #FusionCache
More from @csharpgeeks
  1. Sep 22, 2026یه مدتی قراره از دنیای NET. فاصله بگیرم، چون وقتشه برم سربازی. راستش نمیدونم این مدت رو چج…
  2. Sep 20, 2026🔥 حالا مشکل اصلی: Alert Storm فرض کن Database از دسترس خارج شده. ۱۰۰ Pod داری. هر Pod می‌…
  3. Sep 20, 2026🚨 طراحی سیستم Monitoring و Alerting در یک سیستم بزرگ فرض کن ساعت ۳ صبح است. سیستم شما با…
  4. Sep 19, 2026#Engineering_Leadership تصمیم نگرفتن هم یک تصمیم است یه چیز عجیب توی تیم‌های مهندسی: گاهی…
  5. Sep 19, 2026☑ چک‌لیست آماده‌سازی تیم، فرایندها و زیرساخت برای توسعه با AI توجه: هیچ چک‌لیستی جهان‌شمول…
  6. Sep 19, 2026📌پایان یک انتظار طولانی: اعتبارسنجی ناهمگام (Async Validation) در NET 11.
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 →