我必须一次将大约 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();
}