像网易新闻收藏的功能,如果使用redis做缓存的话,应该如何实现?
迷茫
迷茫 2017-04-22 08:59:31
0
4
808

像网易新闻收藏的功能,如果使用redis做缓存的话,应该如何实现?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全員に返信(4)
巴扎黑

ニュースに ID または一意の識別子がある場合。 Redis コレクション タイプの使用を検討できます。また、コレクションの一意性により、重複追加の問題を防ぐことができます。
redis.sadd('personmark:userID',newsID);// ユーザー コレクションに要素を追加します
redis.smembers('personmark:userID');//ユーザーが収集したニュースIDを一括取得

いいねを押す +0
巴扎黑

ソートセット zset を使用する;
キーはユーザーIDです;
member はニュースの一意の ID です。 スコアは前日からの日付の増分です (たとえば、2015 年 1 月 1 日から開始すると、今日のスコアは 155 になります)。スコアを取得したら、ソートせずに取り出して直接表示できます。 zadd(キー、スコア、メンバー):ニュースを追加
zrank(key, member): スコアに従って小さいものから大きいものまで返します。つまり、収集されたニュースが新しいものから古いものの順に並べ替えられます
; zrangebyscore(key, min, max): ニュースのページめくり表示を実現するために使用される、最初から最後までのスコアのセットを返します。

いいねを押す +0
大家讲道理

キー: news_fav_uid
値: ニュースIDのコレクション(配列)
ここで、uid はユーザー ID です。
$news_ids = 配列(1024,1025,1026);
echo json_encode($news_ids);
Memcached/Redis/MySQL を使用している場合でも、このように保存できます。
array_push は、新しいコレクションを $news_ids 配列の最後にプッシュします。
時間で並べ替えたい場合は、json_decode でデコードし、array_reverse で配列を反転して、foreach 出力だけが必要です。

いいねを押す +0
阿神

1階の答えは非常に良いですが、ここでredisをキャッシュとして使用する必要はなく、データストレージとして使用するだけであることを付け加えておきます。redisはデータベースでもあるためです

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート