using AIK.Models; using AIK.Models.ApiModels; using AIK.Models.SQLiteModels; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace AIK.Service.IService { public interface IDataCacheService { Task GetOrCreateAsync(string key, Func> dataFetchFunc, TimeSpan expiry) where T : class; Task GetAsync(string key) where T : class; Task SetAsync(string key, T data, TimeSpan expiry) where T : class; Task ExistsAsync(string key); Task RemoveAsync(string key); Task ClearExpiredAsync(); Task ClearAllAsync(); Task> GetCacheStatsAsync(); Task GetCacheSizeAsync(); #region 钥匙模型缓存专用 Task> GetSplitVehModelDataAsync(string cacheKey); Task SetSplitVehModelDataAsync(string cacheKey, VehModelClass vehModel, TimeSpan expiry); Task DeleteSplitVehModelDataAsync(string cacheKey); Task ClearSplitCacheExpiredAsync(); #endregion #region 用户Token缓存专用 Task StoreUserTokenAsync(string token, TimeSpan? expiry = null); Task IsUserTokenValidAsync(string token); Task ClearUserTokenAsync(); Task ClearExpiredUserTokensAsync(); Task GetLatestUserTokenAsync(); Task StoreUserInfoAsync(UserModel user); Task ClearUserInfoAsync(); Task GetUserInfoAsync(); #endregion } }