首页 问答 .NET 中如何将 redis 中 List 类型的数据读取为 IAsyncEnumerable
问题详情

这是今天在代码重构中遇到的问题,当前代码中将整个博文列表序列化为一个字符串后保存在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

发表评论
暂无评论

还没有评论呢,快来抢沙发~

点击联系客服

在线时间:8:00-16:00

客服QQ

70068002

客服电话

400-888-8888

客服邮箱

70068002@qq.com

扫描二维码

关注微信公众号

扫描二维码

手机访问本站