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


什么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的過程中,記下來給初學的朋友參考,日后自己也好查閱。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM