2017-04-04 12 views
0

私はlaravelアプリケーションを書いています。ここでは、現在のユーザーにページ上の他のすべてのユーザーを表示したいと考えています。 last_visit_time_in_secondsがunixtimestampあるこのタイプのデータをRedisに保存することはできますか?

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

は、私は、例えば、ユーザ1訪問ページ/item/35のために、そしてRedisのは、この情報を保存する必要があり、この種の情報を格納するのRedisを使いたい、そう。

二つの追加のユーザーが同じページを訪問した場合、Redisのは含まれています:IDS 1、12と2425との

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

ユーザーが今、このページを見ています。短時間(30秒など)の間に{1: seconds}の更新がない場合、このアイテムをこのアイテムキャッシュから削除する必要があります。フロントエンドは定期的にキャッシュの状態を更新するので、これはユーザーがブラウザウィンドウを閉じるのを防ぎます。

レディスでは、この種の情報を保存/取得するためのより良い方法があります(itemから最後の訪問時間を持つユーザーの一覧にマップする)。

+0

googleプレゼンスのチャンネルとウェブソケットは、とにかく私が –

+0

情報がウェブソケット経由で配信されると推測するのに役立ちます。 Questiongはこの情報をバックエンドに格納する方法です。 –

答えて

0

item Idをキーとして使用できます。値は配列になり、更新(新しい訪問)がプッシュされます。

0

これにはbitmapsを使用できます。それは簡単で非常に速いです。

お客様のurl + timestampが鍵となり、訪れたすべてのユーザーIDに1を設定します。

SETBIT '/item/35:timestamp' userId 1

その後は、このキーにBITCOUNTの操作を行います。

BITCOUNT '/item/35:timestamp'

あなたは毎日、労働組合や毎月のビット数ができ、毎日の上に超高速分析を取得し、ページ上の毎月の訪問者。 Here is a nice article on this.

関連する問題