2011-12-26 31 views
2

我想在debian環境中通過C++客戶端使用redis來存儲大的字符串列表(每個列表近200萬個字符串)。我曾經使用boost庫的無序集來處理這個問題,但是由於我必須定期將每個列表持久化到文件系統,並且我得到了很多更新和刪除操作,而不是開發我的數據庫系統,所以我想讓redis一試身手。redis的性能問題

我的redis配置沒有任何週期性保存,我打算在更新完成時手動保存內存中的所有更改。但出於測試目的,我甚至不執行保存到磁盤。我的測試應用程序執行200萬次寫入,這需要接近100秒。這是純粹的內存操作,因爲我沒有執行任何快照操作(我將配置設置爲根本不保存)

如果我使用無序集執行相同的2百萬個插入,則需要接近5秒。互聯網上的每個技術站點都說,redis速度非常快,但在我的情況下,即使沒有涉及IO,它也比boost無序集合慢了近50倍,爲什麼呢?我在這裏忽略了明顯的東西嗎?

回答

5

您可能需要閱讀Redis benchmark page

Redis的是高效的爲遠程存儲。

您試圖將本地存儲(boost :: unordered_set)與遠程存儲(Redis)進行比較。與向Redis執行往返操作的成本相比,維護該組在內存中的成本可以忽略不計。如果您的Redis實例託管在同一個盒子上,也是如此。任何IPC都比哈希表查找更昂貴。