ApiControllerBase增加缓冲方法支持

This commit is contained in:
FalconFly 2023-08-14 15:41:52 +08:00
parent 459dcf8548
commit c8db46053f

View File

@ -259,7 +259,6 @@ namespace Falcon.SugarApi.ApiDefinistions
} }
return this.Cache.GetString(key); return this.Cache.GetString(key);
} }
/// <summary> /// <summary>
/// 设置缓存 /// 设置缓存
/// </summary> /// </summary>
@ -270,7 +269,7 @@ namespace Falcon.SugarApi.ApiDefinistions
if(this.Cache == null) { if(this.Cache == null) {
return; return;
} }
if(key.IsNullOrEmpty() || val.IsNotNullOrEmpty()) { if(key.IsNullOrEmpty() || val.IsNullOrEmpty()) {
return; return;
} }
if(span == null) { if(span == null) {
@ -278,7 +277,6 @@ namespace Falcon.SugarApi.ApiDefinistions
} }
this.Cache.SetString(key,val,new DistributedCacheEntryOptions { AbsoluteExpirationRelativeToNow = span }); this.Cache.SetString(key,val,new DistributedCacheEntryOptions { AbsoluteExpirationRelativeToNow = span });
} }
/// <summary> /// <summary>
/// 获取缓存的对象 /// 获取缓存的对象
/// </summary> /// </summary>
@ -310,7 +308,49 @@ namespace Falcon.SugarApi.ApiDefinistions
return; return;
} }
var str = JsonSerializer.Serialize(val); var str = JsonSerializer.Serialize(val);
this.Cache.SetString(key,str,new DistributedCacheEntryOptions { AbsoluteExpirationRelativeToNow = span }); this.SetCache(key,str,span);
//this.Cache.SetString(key,str,new DistributedCacheEntryOptions { AbsoluteExpirationRelativeToNow = span });
}
/// <summary>
/// 尝试获取key指定的缓冲数据如果不存在通过cacheDataBuilder方法获取缓冲数据获取缓冲数据后存入分布式缓存并返回数据
/// </summary>
/// <param name="key">缓存的键</param>
/// <param name="cacheDataBuilder"></param>
/// <param name="span">存储过期时间</param>
/// <returns>缓冲数据</returns>
protected string? GetCache(string key,Func<string>? cacheDataBuilder = null,TimeSpan? span = null) {
string? str = this.GetCache(key);
if(str.IsNotNullOrEmpty()) {
return str;
}
if(cacheDataBuilder != null) {
str = cacheDataBuilder?.Invoke();
}
if(str.IsNotNullOrEmpty()) {
this.SetCache(key,str,span);
}
return str;
}
/// <summary>
/// 尝试获取key指定的缓冲数据如果不存在通过cacheDataBuilder方法获取缓冲数据获取缓冲数据后存入分布式缓存并返回数据
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="key"></param>
/// <param name="cacheDataBuilder"></param>
/// <param name="span"></param>
/// <returns></returns>
protected T? GetCache<T>(string key,Func<T>? cacheDataBuilder = null,TimeSpan? span = null) {
T? result = this.GetCache<T>(key);
if(result != null) {
return result;
}
if(cacheDataBuilder != null) {
result = cacheDataBuilder.Invoke();
}
if(result != null) {
this.SetCache(key,result,span);
}
return result;
} }
#endregion #endregion
} }