亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > Redis > 正文

Redis性能大幅提升之Batch批量讀寫詳解

2020-03-17 12:38:00
字體:
來源:轉載
供稿:網友

前言

本文主要介紹的是關于Redis性能提升之Batch批量讀寫的相關內容,分享出來供大家參考學習,下面來看看詳細的介紹:

提示:本文針對的是StackExchange.Redis

一、問題呈現

前段時間在開發的時候,遇到了redis批量讀的問題,由于在StackExchange.Redis里面我確實沒有找到PipeLine命令,找到的是Batch命令,因此對其用法進行了探究一下。

下面的代碼是我之前寫的:

public List<StudentEntity> Get(List<int> ids){  List<StudentEntity> result = new List<StudentEntity>();  try  {   var db = RedisCluster.conn.GetDatabase();   foreach (int id in ids.Keys)   {    string key = KeyManager.GetKey(id);    var dic = db.HashGetAll(key).ToDictionary(k => k.Name, v => v.Value);    StudentEntity se = new StudentEntity();    if (dic.Keys.Contains(StudentEntityRedisHashKey.id.ToString()))    {     pe.id = FormatUtils.ConvertToInt32(dic[StudentEntityRedisHashKey.id.ToString()], -1);    }    if (dic.Keys.Contains(StudentEntityRedisHashKey.name.ToString()))    {     pe.name= dic[StudentEntityRedisHashKey.name.ToString()];    }    result.Add(se);   }   catch (Exception ex)   {   }   return result;}

從上面的代碼中可以看出,并不是批量讀,經過性能測試,性能確實是要遠遠低于用Batch操作,因為HashGetAll方法被執行了多次。

下面給出批量方法:

二、解決問題方法

具體的用法是:

var batch = db.CreateBatch();...//這里寫具體批量操作的方法batch.Execute();

2.1批量寫:

具體代碼:

public bool InsertBatch(List<StudentEntity> seList){  bool result = false;  try  {   var db = RedisCluster.conn.GetDatabase();   var batch = db.CreateBatch();   foreach (var se in seList)   {    string key = KeyManager.GetKey(se.id);    batch.HashSetAsync(key, StudentEntityRedisHashKey.id.ToString(), te.id);    batch.HashSetAsync(key, StudentEntityRedisHashKey.name.ToString(), te.name);   }   batch.Execute();   result = true;  }  catch (Exception ex)  {  }  return result;}

這個方法里執行的是批量插入學生實體數據,這里只是針對Hash,其它的也一樣操作。 

2.2批量讀:

具體代碼:

public List<StudentEntity> GetBatch(List<int> ids){  List<StudentEntity> result = new List<StudentEntity>();  List<Task<StackExchange.Redis.HashEntry[]>> valueList = new List<Task<StackExchange.Redis.HashEntry[]>>();  try  {   var db = RedisCluster.conn.GetDatabase();   var batch = db.CreateBatch();   foreach(int id in ids)   {    string key = KeyManager.GetKey(id);    Task<StackExchange.Redis.HashEntry[]> tres = batch.HashGetAllAsync(key);    valueList.Add(tres);   }   batch.Execute();   foreach(var hashEntry in valueList)   {    var dic = hashEntry.Result.ToDictionary(k => k.Name, v => v.Value);    StudentEntity se= new StudentEntity();    if (dic.Keys.Contains(StudentEntityRedisHashKey.id.ToString()))    {     se.id= FormatUtils.ConvertToInt32(dic[StudentEntityRedisHashKey.id.ToString()], -1);    }    if (dic.Keys.Contains(StudentEntityRedisHashKey.name.ToString()))    {     se.name= dic[StudentEntityRedisHashKey.name.ToString()];    }    result.Add(se);   }  }  catch (Exception ex)  {  }  return result;}

這個方法是批量讀取學生實體數據,批量拿到實體數據后,將其轉化成我們需要的數據。下面給出性能對比。

2.3性能對比:

10條數據,約4-5倍差距:

redis,batch,性能提升,批量讀寫   

1000條數據,約28倍的差距:

redis,batch,性能提升,批量讀寫

隨著數據了增多,差距將越來越大。

三、源碼測試案例

上面是批量讀寫實體數據,下面給出StackExchange.Redis源碼測試案例里的批量讀寫寫法:

public void TestBatchSent()  {   using (var muxer = Config.GetUnsecuredConnection())   {    var conn = muxer.GetDatabase(0);    conn.KeyDeleteAsync("batch");    conn.StringSetAsync("batch", "batch-sent");    var tasks = new List<Task>();    var batch = conn.CreateBatch();    tasks.Add(batch.KeyDeleteAsync("batch"));    tasks.Add(batch.SetAddAsync("batch", "a"));    tasks.Add(batch.SetAddAsync("batch", "b"));    tasks.Add(batch.SetAddAsync("batch", "c"));    batch.Execute();        var result = conn.SetMembersAsync("batch");    tasks.Add(result);    Task.WhenAll(tasks.ToArray());        var arr = result.Result;    Array.Sort(arr, (x, y) => string.Compare(x, y));    ...   }  }

這個方法里也給出了批量寫和讀的操作。

總結

好了,先說到這里了。以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對VEVB武林網的支持。


注:相關教程知識閱讀請移步到Redis頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品aaa| 亚洲午夜未删减在线观看| 欧美日韩国产999| 日韩一区在线视频| 91探花福利精品国产自产在线| 日韩av在线免播放器| 欧美电影免费观看高清完整| 中文字幕国产精品久久| 亚洲日本中文字幕免费在线不卡| 欧美一级高清免费| 精品毛片三在线观看| 久久97精品久久久久久久不卡| 中文字幕亚洲一区在线观看| 日本中文字幕成人| 青草青草久热精品视频在线网站| 热99精品只有里视频精品| 911国产网站尤物在线观看| 精品国产一区二区三区久久狼5月| 成人一区二区电影| 亚洲精品第一国产综合精品| 亚洲精品自拍视频| 国产精品免费视频xxxx| www.欧美视频| 亚洲网站在线观看| 亚洲最大激情中文字幕| 国内精品模特av私拍在线观看| 亚洲最大成人免费视频| 成人精品久久久| 欧美在线观看日本一区| 不卡av在线网站| 亚洲色图狂野欧美| 欧美日韩另类在线| 亚洲人成电影网站色www| 中文字幕无线精品亚洲乱码一区| 久久久视频精品| 久久午夜a级毛片| 欧美成人精品三级在线观看| wwwwwwww亚洲| 啊v视频在线一区二区三区| 国产精品日韩在线一区| 中文字幕欧美精品在线| 国产精品男人爽免费视频1| 中文字幕视频在线免费欧美日韩综合在线看| 国产精品福利小视频| 亚洲欧美一区二区三区情侣bbw| 国产69精品久久久久9999| 精品国产电影一区| 岛国视频午夜一区免费在线观看| 久久久久亚洲精品国产| 久久精品国产久精国产思思| 亚洲sss综合天堂久久| 欧美激情第99页| 俺去亚洲欧洲欧美日韩| 亚洲综合在线做性| 91在线观看欧美日韩| 欧美成人激情视频| 欧美最近摘花xxxx摘花| 国产97人人超碰caoprom| 日韩大胆人体377p| 国产精品激情av电影在线观看| 日韩欧美精品在线观看| 97色在线播放视频| 国产精品av免费在线观看| 97超碰色婷婷| 亚洲免费伊人电影在线观看av| 深夜精品寂寞黄网站在线观看| 亚洲一级一级97网| 欧美中文字幕在线播放| 91福利视频网| 国产一区二区免费| 亚洲综合最新在线| 国产91成人在在线播放| 欧美精品www| 欧美亚洲日本网站| 夜夜嗨av一区二区三区免费区| 亚洲精品国产综合区久久久久久久| 欧洲亚洲在线视频| 精品高清一区二区三区| 成人av色在线观看| 欧美日本高清视频| 久久久精品一区二区三区| 久久夜色精品亚洲噜噜国产mv| 亚洲第一中文字幕| 欧美电影电视剧在线观看| 亚洲理论片在线观看| 欧美激情精品在线| 91精品国产综合久久男男| 乱亲女秽乱长久久久| 中文字幕一区二区三区电影| 91免费视频国产| 国产精品丝袜一区二区三区| 欧美在线视频网站| 亚洲国产精品悠悠久久琪琪| 懂色av中文一区二区三区天美| 久久久久久久一区二区| 国产精品福利网站| 日韩免费av在线| 日韩高清电影免费观看完整版| 2019国产精品自在线拍国产不卡| 欧美日韩国产在线播放| 高潮白浆女日韩av免费看| 国产精品免费视频xxxx| 日韩av在线最新| 亚洲午夜国产成人av电影男同| 国产一区二区三区视频免费| 国内精品模特av私拍在线观看| 欧美成人国产va精品日本一级| 国产一区二区激情| 国产欧美精品xxxx另类| 亚洲国产美女久久久久| 欧美日韩国产一区中文午夜| 中文字幕精品国产| 91亚洲精品在线观看| 国产成人精品一区二区| 精品国偷自产在线| 精品福利在线视频| 久久精品国产欧美激情| 久久视频在线视频| 日韩视频在线观看免费| 成人av在线天堂| 欧美另类交人妖| 另类图片亚洲另类| 亚洲一区二区久久久久久| 中文字幕亚洲情99在线| 97精品久久久中文字幕免费| 中文字幕av一区中文字幕天堂| 97在线日本国产| 午夜精品国产精品大乳美女| 奇米一区二区三区四区久久| 国产欧美日韩精品丝袜高跟鞋| 成人有码视频在线播放| 国产亚洲一区精品| 福利二区91精品bt7086| 欧美激情视频在线免费观看 欧美视频免费一| 国产精品网红福利| 国产日韩在线免费| 国产精品视频一区二区三区四| 国产日韩欧美视频| 欧美性一区二区三区| 91精品国产高清自在线| 亚洲欧洲xxxx| 国产99在线|中文| 夜夜嗨av一区二区三区免费区| 92版电视剧仙鹤神针在线观看| 欧美大尺度在线观看| 欧美一级视频在线观看| 日韩视频免费在线| 中文字幕精品久久| 97热精品视频官网| 欧美日韩一区二区三区在线免费观看| 亚洲第一页中文字幕| 亚洲福利在线视频| 久久成人国产精品| 狠狠色噜噜狠狠狠狠97| 午夜精品久久久久久99热| 亚洲成av人影院在线观看| 日韩av电影在线网| 亚洲欧洲在线播放| 精品久久久精品| 国产精品91在线观看| 亚洲欧美日韩另类| 欧美午夜片欧美片在线观看| 91精品免费久久久久久久久| 欧美性少妇18aaaa视频|