【优化】redis仓储增加有序集合功能,感谢会员陌小北优化。

This commit is contained in:
大灰灰
2022-04-16 13:26:06 +08:00
parent 5beb9a0bd9
commit 73fbcaac22
2 changed files with 100 additions and 2 deletions

View File

@@ -131,13 +131,55 @@ namespace CoreCms.Net.Caching.AutoMate.RedisCache
Task ListClearAsync(string redisKey);
/// <summary>
/// 有序集合/定时任务延迟队列用的多
/// 有序集合/定时任务延迟队列用的多(直接传分钟)
/// </summary>
/// <param name="redisKey">key</param>
/// <param name="redisValue">元素</param>
/// <param name="score">分数</param>
Task SortedSetAddAsync(string redisKey, string redisValue, double score);
/// <summary>
/// 有序集合/定时任务延迟队列用的多(直接传时间)
/// </summary>
/// <param name="redisKey">key</param>
/// <param name="redisValue">元素</param>
/// <param name="dt">时间</param>
Task SortedSetAddAsync(string redisKey, string redisValue, DateTime dt);
#region QQ1078350533
/// <summary>
/// 返回有序列表里的数据
/// </summary>
/// <param name="redisKey">RedisKey</param>
/// <param name="start">0 是第一个</param>
/// <param name="stop">最大分数值</param>
/// <returns></returns>
Task<IEnumerable<string>> SortedSetRangeByRankAsync(string redisKey, int start, int stop);
/// <summary>
/// 移出序列表里的指定范围数量
/// </summary>
/// <param name="redisKey">RedisKey</param>
/// <param name="start">0 是第一个</param>
/// <param name="stop">最大分数值</param>
/// <returns></returns>
Task<long> SortedSetRemoveRangeByRankAsync(string redisKey, int start, int stop);
/// <summary>
/// 返回有序列表里的指定范围数量
/// </summary>
/// <param name="redisKey">RedisKey</param>
/// <param name="start">0 是第一个</param>
/// <param name="stop">最大分数值</param>
/// <returns></returns>
Task<long> SortedSetLengthAsync(string redisKey, int start, int stop);
#endregion
}
}

View File

@@ -229,7 +229,7 @@ namespace CoreCms.Net.Caching.AutoMate.RedisCache
/// <summary>
/// 有序集合/定时任务延迟队列用的多
/// 有序集合/定时任务延迟队列用的多(直接传分钟)
/// </summary>
/// <param name="redisKey">key</param>
/// <param name="redisValue">元素</param>
@@ -239,5 +239,61 @@ namespace CoreCms.Net.Caching.AutoMate.RedisCache
await _database.SortedSetAddAsync(redisKey, redisValue, score);
}
/// <summary>
/// 有序集合/定时任务延迟队列用的多(直接传时间)
/// </summary>
/// <param name="redisKey">key</param>
/// <param name="redisValue">元素</param>
/// <param name="dt">时间</param>
public async Task SortedSetAddAsync(string redisKey, string redisValue, DateTime dt)
{
var score = (dt.ToUniversalTime().Ticks - 621355968000000000) / 10000000;
await _database.SortedSetAddAsync(redisKey, redisValue, score);
}
#region QQ1078350533
/// <summary>
/// 返回有序列表里的数据
/// </summary>
/// <param name="redisKey">RedisKey</param>
/// <param name="start">0 是第一个</param>
/// <param name="stop">最大分数值</param>
/// <returns></returns>
public async Task<IEnumerable<string>> SortedSetRangeByRankAsync(string redisKey, int start, int stop)
{
var result = await _database.SortedSetRangeByRankAsync(redisKey, start, stop);
return result.Select(o => o.ToString());
}
/// <summary>
/// 移出序列表里的指定范围数量
/// </summary>
/// <param name="redisKey">RedisKey</param>
/// <param name="start">0 是第一个</param>
/// <param name="stop">最大分数值</param>
/// <returns></returns>
public async Task<long> SortedSetRemoveRangeByRankAsync(string redisKey, int start, int stop)
{
return await _database.SortedSetRemoveRangeByRankAsync(redisKey, start, stop);
}
/// <summary>
/// 返回有序列表里的指定范围数量
/// </summary>
/// <param name="redisKey">RedisKey</param>
/// <param name="start">0 是第一个</param>
/// <param name="stop">最大分数值</param>
/// <returns></returns>
public async Task<long> SortedSetLengthAsync(string redisKey, int start, int stop)
{
return await _database.SortedSetLengthAsync(redisKey, start, stop);
}
#endregion QQ1078350533
}
}