2012-09-01 74 views
0

我正在使用Redis的發佈/訂閱功能。所以服務器正在發佈10個項目,然後客戶獲得這10個項目。Redis中的「歸檔」發佈/訂閱消息

但是,現在有一個新的客戶訂閱訂閱源。我希望他們獲得以前的10個項目以及任何新項目。

Redis有辦法使用發佈和訂閱功能來做到這一點嗎?飼料歷史是否存儲在數據庫中的任何位置?有沒有一個簡單的方法來做到這一點?將郵件存儲在列表中並讓客戶端在列表中執行LRANGE my_list 0 10是最好的方法嗎?

回答

7

我會保留一個單獨的數據存檔並將事件添加到兩者。新客戶可以訂閱和排隊實時事件,閱讀存檔,直到它與第一個發佈的事件保持同步,然後趕上發佈的事件。這樣,您不應該在歸檔和實時事件之間切換時錯過任何已發佈的事件。

1

我最終爲此類目的創建了一個nodejs應用程序。在我的情況下,用戶數據發佈到我想存儲的redis服務器上,我訂購了一個nodejs應用程序的redis頻道,然後將詳細信息保存到數據庫中,到目前爲止我使用mysql和mongo進行了演示,請告訴我如果這是任何興趣和虐待一些代碼,嘗試存儲發佈歷史有一些相似之處...

乾杯