最近要開發的一個項目是分佈式緩存組件,解決參數緩存高效獲取的問題。參數達到了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