方法增加

This commit is contained in:
yanghongwei 2025-03-26 11:23:39 +08:00
parent 61439bf419
commit 95bad4cdfa
1 changed files with 23 additions and 0 deletions

View File

@ -54,5 +54,28 @@ namespace LY.App.Common.Redis
{
return await _db.KeyExistsAsync(key);
}
/// <summary>
/// 获取数据,如果不存在则从数据源获取并存入 Redis
/// </summary>
/// <typeparam name="T">数据类型</typeparam>
/// <param name="key">Redis Key</param>
/// <param name="factory">数据源方法</param>
/// <param name="expiry">可选的过期时间</param>
/// <returns>获取到的值</returns>
public async Task<T?> GetOrSetAsync<T>(string key, Func<Task<T>> factory, TimeSpan? expiry = null)
{
var value = await GetAsync<T>(key);
if (value is not null)
{
return value;
}
value = await factory();
if (value is not null)
{
await SetAsync(key, value, expiry);
}
return value;
}
}
}