7

一度に最大 80,000 行を redis に挿入する必要があり、そのために redis パイプラインを使用することを検討していました。ただし、1000 行のみを挿入してテストすると、パイプラインを使用した場合は 46 秒、パイプラインを使用しない場合は 6 秒かかります。

以下のコードには、redis に挿入しようとしている郵便番号ごとにグループ化された郵便番号のリストがあります。それらは、id としての郵便番号と、グループ化中に収集された郵便番号のリストを含む RedisZipCode として挿入されています。

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