2017-04-04 114 views
0

我正在寫laravel應用程序,在那裏我想向當前用戶顯示頁面上的所有其他用戶。我可以在Redis中存儲這種類型的數據嗎?

我想使用Redis的存儲這類信息,因此,例如,當用戶訪問1頁面/item/35,然後Redis的必須保存這些信息:

{'/item/35': {1: last_visit_time_in_seconds}} 

哪裏last_visit_time_in_seconds是unixtimestamp。

如果兩個額外的用戶訪問同一頁面,然後Redis的將包括:

{'/item/35': {1: seconds}, {12: seconds}, {2425: seconds}} 

用戶ID爲1,12和2425現在正在查看此頁面。如果短時間內(如30秒)沒有更新{1: seconds},則必須從此項目緩存中刪除此項目。前端會定期更新緩存的狀態,所以這可以防止用戶關閉瀏覽器窗口。

在Redis中可能有更好的方式來存儲/獲取這種信息(從item到具有上次訪問時間的用戶列表)。

+0

谷歌存在渠道和websockets,它會幫助我猜 –

+0

信息通過websockets無論如何交付。問題是關於如何將此信息存儲在後端。 –

回答

0

您可以將item Id作爲關鍵字,該值將是一個數組,您將推送它到任何更新(新訪問)。

0

您可以使用bitmaps。這很容易,而且非常快。

您的url + timestamp將是關鍵,您可以將每個userId訪問的位設置爲1。

SETBIT '/item/35:timestamp' userId 1

然後你在這個關鍵的做BITCOUNT

BITCOUNT '/item/35:timestamp'

您可以聯合每日或每月位計數,並獲得每日超快速分析,頁面上的包月用戶。 Here is a nice article on this.

相關問題