我必须一次向redis中插入~80,000行,并且正在研究使用redis流水线操作。但是,当仅插入1000行进行测试时,使用流水线操作需要46秒,而没有流水线操作需要6秒。
在下面的代码中,我有一个按邮政编码分组的邮政编码列表,我试图插入到redis中。它们作为RedisZipCode插入,其中包含作为id的zipcode和在分组期间收集的zipcodes列表。
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();
}