using System; using System.Threading.Tasks; namespace FreeSql.Interface { public interface ICache { /// /// 缓存数据时序列化方法,若无设置则默认使用 Json.net /// Func Serialize { get; set; } /// /// 获取缓存数据时反序列化方法,若无设置则默认使用 Json.net /// Func Deserialize { get; set; } /// /// 缓存可序列化数据 /// /// /// 缓存键 /// 可序列化数据 /// 缓存秒数,<=0时永久缓存 void Set(string key, T data, int timeoutSeconds = 0); /// /// 循环或批量获取缓存数据 /// /// /// /// T Get(string key); /// /// 循环或批量获取缓存数据 /// /// /// string Get(string key); /// /// 循环或批量删除缓存键 /// /// 缓存键[数组] void Remove(params string[] keys); /// /// 缓存壳 /// /// 缓存类型 /// 缓存键 /// 缓存秒数 /// 获取源数据的函数 /// T Shell(string key, int timeoutSeconds, Func getData); /// /// 缓存壳(哈希表) /// /// 缓存类型 /// 缓存键 /// 字段 /// 缓存秒数 /// 获取源数据的函数 /// T Shell(string key, string field, int timeoutSeconds, Func getData); /// /// 缓存可序列化数据 /// /// /// 缓存键 /// 可序列化数据 /// 缓存秒数,<=0时永久缓存 Task SetAsync(string key, T data, int timeoutSeconds = 0); /// /// 循环或批量获取缓存数据 /// /// /// /// Task GetAsync(string key); /// /// 循环或批量获取缓存数据 /// /// /// Task GetAsync(string key); /// /// 循环或批量删除缓存键 /// /// 缓存键[数组] Task RemoveAsync(params string[] keys); /// /// 缓存壳 /// /// 缓存类型 /// 缓存键 /// 缓存秒数 /// 获取源数据的函数 /// Task ShellAsync(string key, int timeoutSeconds, Func> getDataAsync); /// /// 缓存壳(哈希表) /// /// 缓存类型 /// 缓存键 /// 字段 /// 缓存秒数 /// 获取源数据的函数 /// Task ShellAsync(string key, string field, int timeoutSeconds, Func> getDataAsync); } }