问题详情
这是今天在代码重构中遇到的问题,当前代码中将整个博文列表序列化为一个字符串后保存在redis 中,读取时将整个字符串反序列化为博文列表。重构中改用 redis List 保存博文列表,将博文一篇一篇添加到列表,读取时想将这个 List 读取为 .NET 的 IAsyncEnumerable 类型,请问如何用 C# 代码实现?
回答
参考 AI 的回答,用下面的代码实现了
public async IAsyncEnumerable<T> ReadRedisListAsync<T>(string listKey, int pageSize = 20)
{
long start = 0;
while (true)
{
long stop = start + pageSize - 1;
RedisValue[] values = await redis.Database.ListRangeAsync(listKey, start, stop);
if (values == null || values.Length == 0)
break;
foreach (var value in values)
{
var item = redis.Serializer.Deserialize<T>(value!);
if (item == null) continue;
yield return item;
}
start += pageSize;
if (values.Length < pageSize)
break;
}
}
版权:言论仅代表个人观点,不代表官方立场。转载请注明出处:https://www.stntk.com/question/2519.html
还没有评论呢,快来抢沙发~