2011-10-12 110 views
0

Redis是一個NOSQL鍵/值數據庫,它讀取RAM中的整個生命週期(因此速度非常快)。對我來說,一個數組(例如,在PHP中)也是一樣的,因爲數組是一組鍵/值。數據庫的主要區別在於索引值將在不讀取整個數據庫的情況下單獨調用。Redis(鍵/值數據庫)和關聯數組之間的區別?

現在,當Redis讀取整個數據庫(到RAM中)時,它與鍵/值數組有什麼不同?

+1

它仍然是一個**持久存儲**可通過網絡** – zerkms

回答

10
  • 一個Redis的可跨網絡
  • 服務於多個服務器正如前面點的結果,它支持認證
  • 一個Redis的數據集可以堅持磁盤
  • 的Redis可以作爲隊列與阻止讀取
  • Redis支持多個數據塊
  • Redis的可自動過期的關鍵後,在一定的超時或在某個時間
  • Redis的可提供實時的所有請求
  • Redis的允許列表訂閱某些事件
  • Redis的支持複製到另一個Redis的服務器
  • Redis的支持MUL tiple languages,你沒有綁定到一個單獨的一個
+0

+1非常好的答案 – 2011-10-12 06:36:24

+0

是的,這些是數據庫服務器的優點,但一個數組也可以持久化到磁盤,我們可以有多個數據庫(數組)。我對嗎? – Googlebot

+0

是的,你可以將一個數組序列化並持久化到磁盤,當然你也可以有多個數組。 – stivlo

0

另請注意,PHP中的內存使用情況是非常糟糕的數組。所以如果你有一個大陣列,你將需要大量的內存。 Redis可以提高效率。

+0

我已經注意到了這一點,但沒有理論上的解釋。 Perl和Python也是如此嗎? – Googlebot

+2

在PHP中,每個元素都需要一個值爲16個字節的值結構(zval)。還需要一個哈希桶 - 佔用36個字節。這給每個值52個字節。內存分配頭文件需要另外8個字節* 2 - 它提供了68個字節。 (https://bugs.php.net/bug.php?id=41053)。我不知道Perl和Python。 – Nin

+0

@Ali in Perl我不知道,但很容易找到[Devel :: Size](http://search.cpan.org/~nwclark/Devel-Size-0.77/lib/Devel/Size。下午)包。要導入:使用Devel :: Size qw(total_size); – stivlo

相關問題