namespace DramaLing.Api.Services.Caching; /// /// 智能快取服務介面,支援多層快取策略 /// public interface ICacheService { /// /// 取得快取值 /// /// 快取值類型 /// 快取鍵 /// 快取值 Task GetAsync(string key) where T : class; /// /// 設定快取值 /// /// 快取值類型 /// 快取鍵 /// 快取值 /// 過期時間 /// 是否成功 Task SetAsync(string key, T value, TimeSpan? expiry = null) where T : class; /// /// 移除快取值 /// /// 快取鍵 /// 是否成功 Task RemoveAsync(string key); /// /// 檢查快取是否存在 /// /// 快取鍵 /// 是否存在 Task ExistsAsync(string key); /// /// 設定快取過期時間 /// /// 快取鍵 /// 過期時間 /// 是否成功 Task ExpireAsync(string key, TimeSpan expiry); /// /// 清除所有快取 /// /// 是否成功 Task ClearAsync(); /// /// 批次操作 /// /// 快取值類型 /// 快取鍵列表 /// 快取值字典 Task> GetManyAsync(IEnumerable keys) where T : class; /// /// 批次設定 /// /// 快取值類型 /// 鍵值對 /// 過期時間 /// 是否成功 Task SetManyAsync(Dictionary keyValuePairs, TimeSpan? expiry = null) where T : class; /// /// 取得快取統計資訊 /// /// 快取統計 Task GetStatsAsync(); } /// /// 快取統計資訊 /// public class CacheStats { public int TotalKeys { get; set; } public long TotalMemoryUsage { get; set; } public int HitCount { get; set; } public int MissCount { get; set; } public double HitRate => TotalRequests > 0 ? (double)HitCount / TotalRequests : 0; public int TotalRequests => HitCount + MissCount; public DateTime LastUpdated { get; set; } }