/// <summary> /// 缓存这些对象 /// </summary> /// <returns>数据</returns> public void RemoveCache <TData>(long id) { if (id > 0) { Client.Del(DataKeyBuilder.DataKey <TData>(id)); } }
/// <summary> /// 如果没有缓存过这些对象,就缓存它 /// </summary> /// <param name="lambda">查询表达式</param> /// <param name="keyFunc">设置键的方法,可为空</param> /// <returns>数据</returns> public void TryCacheData <TData, TDataAccess, TDatabase>(Expression <Func <TData, bool> > lambda, Func <TData, string> keyFunc = null) where TDataAccess : MySqlTable <TData, TDatabase>, new() where TData : EditDataObject, IIdentityData, new() where TDatabase : MySqlDataBase { var key = DataKeyBuilder.DataKey <TData>(0); var date = GetValue <DateTime>(key); if (date == DateTime.MinValue) { CacheData <TData, TDataAccess, TDatabase>(lambda, keyFunc); } }
/// <summary> /// 缓存这些对象 /// </summary> /// <returns>数据</returns> public void RefreshCache <TData, TDataAccess>(long id, Func <TData, bool> lambda = null) where TDataAccess : MySqlTable <TData, MySqlDataBase>, new() where TData : EditDataObject, IIdentityData, new() { if (id <= 0) { return; } var access = new TDataAccess(); var data = access.LoadByPrimaryKey(id); if (data != null && (lambda == null || lambda(data))) { Set(DataKeyBuilder.DataKey(data), data); } else { Redis.RemoveKey(DataKeyBuilder.DataKey <TData>(id)); } }
/// <summary> /// 缓存数据 /// </summary> /// <typeparam name="TData"></typeparam> /// <param name="data">键的组合</param> /// <returns></returns> public void SetEntity <TData>(TData data) where TData : class, IIdentityData { Set(DataKeyBuilder.DataKey(data), data); }
/// <summary> /// 读缓存 /// </summary> /// <typeparam name="TData"></typeparam> /// <param name="id">键的组合</param> /// <param name="def">默认值</param> /// <returns></returns> public TData GetEntity <TData>(long id, TData def = null) where TData : class, new() { return(id == 0 ? def ?? new TData() : Get <TData>(DataKeyBuilder.DataKey <TData>(id)) ?? def ?? new TData()); }
/// <summary> /// 缓存这些对象 /// </summary> /// <returns>数据</returns> public void ClearCache <TData>() { FindAndRemoveKey(DataKeyBuilder.DataKey <TData>("*")); }
/// <summary> /// 缓存这些对象 /// </summary> /// <returns>数据</returns> public Task RemoveCache <TData>(long id) { return(id > 0 ? Client.DelAsync(DataKeyBuilder.DataKey <TData>(id)) : Task.CompletedTask); }
/// <summary> /// 缓存数据 /// </summary> /// <typeparam name="TData"></typeparam> /// <param name="data">键的组合</param> /// <returns></returns> public Task SetEntity <TData>(TData data) where TData : class, IIdentityData { return(Set(DataKeyBuilder.DataKey(data), data)); }
/// <summary> /// 读缓存 /// </summary> /// <typeparam name="TData"></typeparam> /// <param name="id">键的组合</param> /// <param name="def">默认值</param> /// <returns></returns> public async Task <TData> GetEntity <TData>(long id, TData def = null) where TData : class, new() { return(id == 0 ? def ?? new TData() : (await Get <TData>(DataKeyBuilder.DataKey <TData>(id))) ?? def ?? new TData()); }