<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

    blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

    Redis和Ssdb讀取性能對比

    最近關(guān)注了一下ssdb,它的特點是基于文件存儲系統(tǒng)所以它支撐量大的數(shù)據(jù)而不因為內(nèi)存的限制受取約束.從官網(wǎng)的測試報告來看其性能也非常出色和redis相當(dāng),因此可以使用它來代替redis來進(jìn)行k-v數(shù)據(jù)業(yè)務(wù)的處理.想法總是美好的,不過現(xiàn)實中就可能帶點骨感.
      幸好ssdb是兼容redis的部份協(xié)議,所以直接用redis client庫就可以進(jìn)行一個壓力測試.以于針對Redis和ssdb的幾個讀操進(jìn)行一個簡單的性能測試對比,這個測試不是直接在本機調(diào)用Redis和ssdb. 而是通過一個程序在別的服務(wù)器上調(diào)用.測試指令(get,hget,lregion)以下是測試結(jié)果截圖
    class Test
    {
    long mCount = 0;
    long mIndex = 0;
    private bool mRuning = true;
    public long Count
    {
    get
    {
    return mCount;
    }
    }
    public void Execute()
    {
    Console.WriteLine("* -----------------------------------------------");
    Console.WriteLine("* redis get");
    ConsoleWait.Start();
    string result = OnTest(Config.RedisClient,GetHandler);
    ConsoleWait.End();
    Console.WriteLine(result);
    Console.WriteLine("* ssdb get");
    ConsoleWait.Start();
    result = OnTest(Config.SSDBClient, GetHandler);
    ConsoleWait.End();
    Console.WriteLine(result);
    Console.WriteLine("* -----------------------------------------------");
    //
    Console.WriteLine("* redis lregion[1-2]");
    ConsoleWait.Start();
    result = OnTest(Config.RedisClient, LRegionHandler1TO2);
    ConsoleWait.End();
    Console.WriteLine(result);
    Console.WriteLine("* ssdb lregion[1-2]");
    ConsoleWait.Start();
    result = OnTest(Config.SSDBClient, LRegionHandler1TO2);
    ConsoleWait.End();
    Console.WriteLine(result);
    Console.WriteLine("* -----------------------------------------------");
    //
    Console.WriteLine("* redis lregion[50-60]");
    ConsoleWait.Start();
    result = OnTest(Config.RedisClient, LRegionHandler1TO2);
    ConsoleWait.End();
    Console.WriteLine(result);
    Console.WriteLine("* ssdb lregion[50-60]");
    ConsoleWait.Start();
    result = OnTest(Config.SSDBClient, LRegionHandler1TO2);
    ConsoleWait.End();
    Console.WriteLine(result);
    Console.WriteLine("* -----------------------------------------------");
    //
    Console.WriteLine("* redis lregion[100-110]");
    ConsoleWait.Start();
    result = OnTest(Config.RedisClient, LRegionHandler1TO2);
    ConsoleWait.End();
    Console.WriteLine(result);
    Console.WriteLine("* ssdb lregion[100-110]");
    ConsoleWait.Start();
    result = OnTest(Config.SSDBClient, LRegionHandler1TO2);
    ConsoleWait.End();
    Console.WriteLine(result);
    Console.WriteLine("* -----------------------------------------------");
    //
    Console.WriteLine("* redis hget");
    ConsoleWait.Start();
    result = OnTest(Config.RedisClient, HGetHandler);
    ConsoleWait.End();
    Console.WriteLine(result);
    Console.WriteLine("* ssdb hget");
    ConsoleWait.Start();
    result = OnTest(Config.SSDBClient, HGetHandler);
    ConsoleWait.End();
    Console.WriteLine(result);
    Console.WriteLine("* -----------------------------------------------");
    }
    private void HGetHandler(RedisClient e)
    {
    while (mRuning)
    {
    long index = System.Threading.Interlocked.Increment(ref mIndex);
    ProtobufKey key = "user_" + Data.Import.Users[(int)(index % Data.Import.Users.Count)].Name;
    key.Get<Model.Order, Model.Employee, Model.Customer>(e);
    System.Threading.Interlocked.Increment(ref mCount);
    }
    }
    private void LRegionHandler1TO2(RedisClient e)
    {
    while (mRuning)
    {
    ProtobufList<Model.Order> list = "Orders";
    list.Range(1, 2, e);
    System.Threading.Interlocked.Increment(ref mCount);
    }
    }
    private void LRegionHandler50TO60(RedisClient e)
    {
    while (mRuning)
    {
    ProtobufList<Model.Order> list = "Orders";
    list.Range(50, 60, e);
    System.Threading.Interlocked.Increment(ref mCount);
    }
    }
    private void LRegionHandler100TO110(RedisClient e)
    {
    while (mRuning)
    {
    ProtobufList<Model.Order> list = "Orders";
    list.Range(100, 110, e);
    System.Threading.Interlocked.Increment(ref mCount);
    }
    }
    private  void GetHandler(RedisClient e)
    {
    while (mRuning)
    {
    long index = System.Threading.Interlocked.Increment(ref mIndex);
    ProtobufKey key = "user_" + Data.Import.Users[(int)(index % Data.Import.Users.Count)].Name;
    key.Get<Model.User>(e);
    System.Threading.Interlocked.Increment(ref mCount);
    }
    }
    private string OnTest(RedisClient client,Action<RedisClient> handler)
    {
    mCount = 0;
    mRuning = true;
    for (int i = 0; i < 20; i++)
    {
    System.Threading.ThreadPool.QueueUserWorkItem((o) =>
    {
    GetHandler((RedisClient)o);
    }, client);
    }
    int s = 20;
    while (s > 0)
    {
    System.Threading.Thread.Sleep(1000);
    s--;
    }
    mRuning = false;
    System.Threading.Thread.Sleep(1000);
    return string.Format("* [seconds:{1}/total:{0}]", mCount, mCount / 20);
    }
    }
      從測試結(jié)果看來差距還是非常明顯,并不象官網(wǎng)那樣說得這么理想.雖然SSDB效率上不如REDIS,但其基于磁盤存儲有著其最大的優(yōu)勢,畢竟很多業(yè)務(wù)數(shù)據(jù)遠(yuǎn)超過服務(wù)器內(nèi)存的容量.
      SSDB的測試結(jié)果不理想也許是硬件環(huán)境受限,如果有個SSD硬盤的測試環(huán)境估計也得到一個更好的結(jié)果,但在測試過程中發(fā)現(xiàn)一個問題就是SSDB占用的CPU資源也是非常大的,在以上測試過程SSDB的并發(fā)效率比不上REDIS,同時CPU損耗上基本要比REDIS高出一倍的樣子.
      以上測試結(jié)果緊緊是是一些情況下的性能測試對比,不能完全表述出兩者在應(yīng)用的差距的結(jié)果,如果需要用到這些產(chǎn)品的同學(xué)不防在實施前進(jìn)行一些測試為實施選擇提供一個更可靠的結(jié)果.
     

    posted on 2014-08-27 10:19 順其自然EVO 閱讀(350) 評論(0)  編輯  收藏 所屬分類: 測試學(xué)習(xí)專欄

    <2014年8月>
    272829303112
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲小说图区综合在线| 一区二区在线免费视频| 国产jizzjizz免费视频| 国产视频精品免费视频| 久久综合亚洲色HEZYO社区| 国产精品冒白浆免费视频| 成全视频在线观看免费| 香蕉大伊亚洲人在线观看| 亚洲男人在线无码视频| 免费观看激色视频网站(性色)| 免费人成大片在线观看播放电影 | 在线观看免费宅男视频| 国产成人无码免费看片软件| 亚洲国产精品白丝在线观看| 亚洲国产婷婷综合在线精品| 57PAO成人国产永久免费视频 | 欧洲亚洲国产精华液| 亚洲AV无码一区东京热久久 | 全免费毛片在线播放| 美女网站在线观看视频免费的| 亚洲人6666成人观看| 亚洲色成人WWW永久网站| 日韩在线免费播放| 最近的中文字幕大全免费8| 久久毛片免费看一区二区三区| 亚洲综合小说另类图片动图| 亚洲精品高清视频| 亚洲人午夜射精精品日韩| 午夜高清免费在线观看| 99久在线国内在线播放免费观看 | 亚洲v高清理论电影| 亚洲国产精品无码久久久久久曰| 国产a视频精品免费观看| 国产日韩一区二区三免费高清| 国产成人亚洲综合无| 亚洲人成77777在线播放网站不卡| 亚洲va国产va天堂va久久| 亚洲国产精品无码久久久久久曰| 在线播放高清国语自产拍免费 | 污污网站免费观看| 免费在线观影网站|