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; }
}