2012-05-17 64 views
15

大多數人似乎建議在不同端口(6379和6380)上運行單獨的Redis實例。爲什麼更常用的建議是創建第二個數據庫?我還沒完全通過文檔,但大多數示例在連接時沒有提及「選擇Redis數據庫」。從Ruby客戶端的例子,手拉/ predis自述:多個Redis實例

$redis = new Predis\Client(array(
    'scheme' => 'tcp', 
    'host' => '10.0.0.1', 
    'port' => 6379, 
)); 

目前,我們在我們的篝火辦公室跑Hubot,和我工作的第二個用於GTalk的,因爲你只能在使用單個適配器爲每個Hubot實例。所以我正在考慮創建第二個Redis數據庫或實例,以便兩個Hubots之間的數據是隔離的。但在我進一步研究之前,我想了解爲什麼要使用單獨的實例而不是創建第二個數據庫。

+0

如果其他人正在做同樣的事情,當您使用兩個hubots和兩個redis實例時,您必須指定REDISTOGO_URL環境變量。 – brock

回答

32

主要有兩個原因:

  1. 多個數據庫通常被認爲不好,有一天會被拋棄,他們有一定的性能損失,但很輕微。

  2. 主要原因是redis是單線程的,如果你需要兩個不同的數據源,另一個redis實例會提高性能,因爲它會利用你可能擁有的另一個CPU,而一個實例總是隻使用一個。

  3. 不同的redis實例可以有fdiffecten持久性設置。例如一個實例可以使用只讀存儲器和其他可以使用的文件作爲存儲 Redis Persistence

再有其他的優點等具有分開的身份驗證密碼,LRU策略等 - 其可以僅在實例級來完成。

+0

真棒 - 我覺得有一個很好的理由。謝謝 – brock