Redis中Value使用hash類型的效率是普通String的兩倍 - Gabriel Zhang

最近要開發的一個項目是分佈式緩存組件,解決參數緩存高效獲取的問題。參數達到了500萬級別,剛剛開始瞭解Redis。作設計的時候考慮到Value使用哪一種類型的問題?緩存

主要面臨的是使用通常的String仍是使用Hash。原本直覺覺得使用String的效率會高,由於Redis在Memcached的基礎上升級了,擴展的Value類型應該是爲了方便。沒想到在效率上也有了很大的提高。dom

測試的環境是一臺Linux物理機,安裝了最新版的Redis2.6. 測試數據以下:分佈式

String類型的數據和Hash類型的數據各100w(前100萬爲String,後100萬爲Hash),隨機取100次數據,比較兩種的耗時;學習

測試的代碼以下:測試

            RedisClient client = new RedisClient("192.168.1.59", 6379);
            Stopwatch sw = Stopwatch.StartNew();
            for (int i = 0; i < 100; i++)
            {
                client.Get(new Random().Next(1000000).ToString());

            }
            sw.Stop();
            Console.WriteLine("使用String類型:"+sw.ElapsedMilliseconds);

            sw.Restart();
            for (int i = 0; i < 100; i++)
            {
                long t = new Random().Next(1000000, 199999998);
                client.GetValueFromHash(t.ToString(), (t + 1).ToString());

            }
            sw.Stop();
            Console.WriteLine("使用Hash類型:"+sw.ElapsedMilliseconds);

 

雖然都是毫秒級別,可是結果對比下就一目瞭然,我應該選擇那種類型:pwa

 

相差2倍的程度。設計

正在學習使用Redis的過程當中,記下來給初學的朋友參考,往後本身也好查閱。code

相關文章
相關標籤/搜索