2013-02-20 103 views
0

我正在實現一個使用節點js和redis的TCP聊天服務器,但是我似乎無法使用發佈和訂閱在redis上保留聊天數據,因此當我離開聊天室並重新進入,我不會更新最新的消息,我應該如何實現這樣的東西?Redis發佈/訂閱數據持久性

回答

3

發佈並不意味着存儲在Redis的,即使你選擇了磁盤存儲。當它收到消息時,它只會查找與請求的頻道的連接並轉發給每個頻道。所以,它不存儲任何東西。即使這樣做,它應該不斷地嘗試轉發消息(因爲它是一個pub/sub模型),這不是非常有效。相反,您還應該將(lpush)郵件推送到一個隊列中,以便它們可以被存儲。當客戶端連接並且沒有郵件時,它可以從隊列中檢索這些郵件(無需彈出,所以其他新手也可以使用)以及然後訂閱頻道並接收新消息。

1

默認情況下,redis僅在內存中。您必須明確啓用持久性。

有多種選擇,AOF每個查詢是最安全的,但可能是最慢的。

更多細節在這裏:http://redis.io/topics/persistence