2011-12-20 49 views

回答

24

我們使用Redis的上Trello的臨時數據,我們會好起來的與失去。我們不會將Redis中的數據保存到磁盤中,因此我們只使用它allkeys-lru,因此我們只能存儲可隨時被踢出的內容,而且對用戶造成極小的不便(例如暫時看到不正確的用戶狀態)。這就是說,我們給它5倍以上的空間來存儲它的實際工作集,並從10個按鍵中選擇過期時間,所以我們真的從來沒有看到我們正在使用的任何東西被踢出去。

  1. 這是我們的pubsub服務器。當用戶對板或卡做某些事情時,我們希望發送一個帶有增量的消息給訂閱了更改對象的所有WebSocket連接的客戶端,這樣我們所有的Node進程都訂閱了一個傳播的pubsub頻道這些消息,並將其傳播給適當的許可和訂閱的websockets。

  2. 我們使用它來支持socket.io,但由於我們只使用websockets,並且因爲socket.io是too chatty需要縮放,就像我們目前需要的那樣,我們有一個補丁可以禁用所有的這是我們必需的一個渠道。

  3. 對於我們沒有的WebSockets誰的用戶,我們必須保持已經發生,因爲用戶的最後一次民意調查要求每個對象通道在操作的列表。爲此,我們使用一個列表,我們在最近的100個元素上加上一個列表,以及一個輔助計數器,它列出了自創建以來已添加到列表中的元素數量。所以,當我們回答來自這樣一個瀏覽器的輪詢請求時,我們可以檢查它所報告的最後一個元素,並且只發送自此之後添加到隊列中的任何消息。因此,在大多數情況下,輪詢請求只需進行權限檢查和單個Redis密鑰檢查,速度非常快。

  4. 我們存儲有關Redis的連接用戶的活動狀態的一些短暫的數據,因爲該數據經常變化,而且沒有必要把它堅持到磁盤。

  5. 我們店裏的短暫密鑰支持的OAuth登錄在Redis的。

我們愛Redis;一旦你有了它的一個實例並運行,你想用它來處理各種事情。我們遇到的唯一困難是slow-consuming clients eating up the available space

我們使用MongoDB來滿足更傳統的數據庫需求。

+0

非常感謝Brett。哦,並祝賀構建這樣一個真棒應用:) – William 2012-01-06 15:59:32

+0

https://trello.com/brett – 2012-01-13 16:36:22

+0

@Brett,你使用redis進行用戶會話數據和權限檢查嗎?謝謝! – paulkon 2014-03-18 15:09:07