什么Redis? 點擊這里
最近要開發的一個項目是分布式緩存組件,解決參數緩存高效獲取的問題。參數達到了500萬級別,剛剛開始了解Redis。做設計的時候考慮到Value使用哪種類型的問題?
主要面臨的是使用一般的String還是使用Hash。本來直覺以為使用String的效率會高,因為Redis在Memcached的基礎上升級了,擴展的Value類型應該是為了方便。沒想到在效率上也有了很大的提升。
測試的環境是一台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);
雖然都是毫秒級別,但是結果對比下就一目了然,我應該選擇那種類型:
相差2倍的程度。
正在學習使用Redis的過程中,記下來給初學的朋友參考,日后自己也好查閱。