سامانه آنلاین و آماده‌ی آزمایش

داده کمتر منتظر می‌ماند؛
سیستم سریع‌تر پاسخ می‌دهد.

یک پیاده‌سازی عملی از الگوی Cache-Aside با FastAPI، Redis و PostgreSQL؛ همراه با کنترل هم‌زمانی برای جلوگیری از Cache Stampede.

پروژه دانشگاهیپویا فلاحی
request_flow.py● LIVE
01GET /products/42
01
CLIENT REQUESTورود درخواست به FastAPI
~ 1 ms
02
REDIS LOOKUPجست‌وجوی کلید در حافظه
O(1)
X-CACHE-STATUSHIT — پاسخ مستقیم از کش
12return cached_response
API SERVERFastAPI
در حال بررسی
DB
PRIMARY STOREPostgreSQL 16
در حال بررسی
R
CACHE LAYERRedis 7.2
در حال بررسی
DATASET
محصول آزمایشی
01 /معماری سیستم

یک مسیر کوتاه‌تر برای پاسخ

درخواست ابتدا کش را بررسی می‌کند. تنها در صورت نبود داده، PostgreSQL خوانده و نتیجه با TTL مشخص در Redis ذخیره می‌شود.

01
ASGI LAYER

FastAPI

دریافت درخواست، اعتبارسنجی و مدیریت چرخه پاسخ ناهمگام.

02
IN-MEMORY

Redis Cache

دسترسی سریع با TTL شصت ثانیه و قفل توزیع‌شده.

اولین مقصد
03
PERSISTENCE

PostgreSQL

منبع اصلی و قابل‌اعتماد نگهداری اطلاعات محصولات.

TTL Managementانقضای خودکار داده کش‌شده
Stampede Protectionقفل توزیع‌شده برای درخواست‌های هم‌زمان
Cache Refreshبه‌روزرسانی کش پس از تغییر داده
Graceful Fallbackادامه سرویس هنگام قطعی Redis
02 /آزمایش عملکرد

تفاوت را زنده اندازه بگیرید

یک محصول و تعداد درخواست را انتخاب کنید. مرورگر دو مسیر مستقیم دیتابیس و مسیر کش‌شده را در شرایط یکسان مقایسه می‌کند.

درخواست‌ها به‌صورت متوالی اجرا می‌شوند تا اندازه‌گیری مرورگر پایدار و قابل مقایسه باشد.

DATABASE QUERY

بدون کش

/direct/products/{id}
ms
میانگین پاسخ
کمینه P95 موفق
VSشتاب
REDIS LOOKUP

با کش

/products/{id}
ms
میانگین پاسخ
کمینه P95 Cache Hit
برای مشاهده نتیجه، آزمایش را اجرا کنید.
03 /داده‌های نمونه

محصولات داخل PostgreSQL

صفحه ۱