Flowchart · HybridCache

HybridCache.GetOrCreateAsync làm gì

Luồng HybridCache.GetOrCreateAsync GetOrCreateAsync kiểm tra L1 trong tiến trình, rồi L2 Redis; chỉ khi cả hai miss mới gọi factory một lần cho mọi request cùng khoá, ghi kết quả vào cả hai tầng rồi trả về. KHÔNG CÓ CÓ KHÔNG Request GetOrCreateAsync(key) Có trong L1? IMemoryCache Trả ngay từ L1 trong tiến trình Có trong L2? Redis Nạp lên L1 rồi trả deserialize từ Redis Gọi factory một lần truy vấn database Ghi cả L2 và L1 Expiration · LocalCacheExpiration Trả kết quả cho mọi request đang chờ 100 request cùng khoá, cùng miss: chỉ một request chạy factory, 99 request còn lại chờ kết quả đó. TTL của L1 ngắn hơn L2 (L2 5 phút thì L1 1 phút): lưới an toàn khi L1 các pod lệch nhau. CHÚ GIẢI Vào / trả về Kiểm tra tầng cache Bước xử lý Chống stampede © tiennhm