7

我必须一次将大约 80,000 行插入到 redis 中,并且正在考虑使用 redis 流水线来执行此操作。然而,当测试仅插入 1000 行时,使用流水线需要 46 秒,而没有流水线需要 6 秒。

在下面的代码中,我有一个按邮政编码分组的邮政编码列表,我试图插入到 redis 中。它们作为 RedisZipCode 插入,其中包含作为 id 的邮政编码和在分组期间收集的邮政编码列表。

public class ZipCode
{
    public string city { get; set; }
    public string state { get; set; }
    public string zip_code { get; set; }
}

public class RedisZipCode
{
    public string id { get; set; }
    public List<ZipCode> zipcodes{ get; set; }
}

没有流水线

using (var zipCodeClient = redisClient.GetTypedClient<RedisZipCode>())
{
    foreach (var item in zipcodes.GroupBy(z => z.zip_code))
    {
        zipCodeClient.Store(new RedisZipCode(item.ToList()));
    }
}

使用流水线

using (var zipCodeClient = redisClient.GetTypedClient<RedisZipCode>())
using (var pipeline = zipCodeClient.CreatePipeline())
{
    foreach (var item in zipcodes.GroupBy(z => z.zip_code))
    {
        pipeline.QueueCommand(c => c.Store(new RedisZipCode(item.ToList())));
    }
    pipeline.Flush();
}
4

0 回答 0