2015-08-15 59 views
1

例如,hgetall表示時間複雜度爲O(N)。如果哈希有5個字段,這是否意味着Redis正在執行5個操作?我知道基於許多基準的Redis可以每秒處理80-100k次操作。但真正的手術是什麼?它是爲命令列出的時間複雜度的1-1映射嗎?這將幫助我繪製出我對Redis進行的查詢的閾值。Redis中的時間複雜性意味着什麼?

+0

這不是大O符號的意思。 – dramzy

+0

我知道,但大O表示法與Redis中的操作有什麼關係? 80k操作的聲明,但這是基本的hset或hget命令。如果它返回5個字段,是否是hgetall 5操作? – dmastylo

+0

取決於你從哪裏得到「索賠」 –

回答

1

通過代碼的外觀:

void genericHgetallCommand(client *c, int flags) { 
    ... 
    ... 
    while (hashTypeNext(hi) != C_ERR) { 
      if (flags & OBJ_HASH_KEY) { 
       addHashIteratorCursorToReply(c, hi, OBJ_HASH_KEY); 
       count++; 
      } 
      if (flags & OBJ_HASH_VALUE) { 
       addHashIteratorCursorToReply(c, hi, OBJ_HASH_VALUE); 
       count++; 
      } 
     } 

它遍歷所有的鍵和值。因此,Hashset越大複雜性越大。它的線

+0

我想我的問題是什麼意思,在「每秒操作」方面。即使是在Redis的基準測試頁面上,我也能看到這一點,但它並不能準確解釋「操作」是什麼。 – dmastylo