巴扎黑2017-04-22 09:01:31
ニュースに ID または一意の識別子がある場合。 Redis コレクション タイプの使用を検討できます。また、コレクションの一意性により、重複追加の問題を防ぐことができます。
redis.sadd('personmark:userID',newsID);// ユーザー コレクションに要素を追加します
redis.smembers('personmark:userID');//ユーザーが収集したニュースIDを一括取得
巴扎黑2017-04-22 09:01:31
ソートセット zset を使用する;
キーはユーザーIDです;
member はニュースの一意の ID です。
スコアは前日からの日付の増分です (たとえば、2015 年 1 月 1 日から開始すると、今日のスコアは 155 になります)。スコアを取得したら、ソートせずに取り出して直接表示できます。
zadd(キー、スコア、メンバー):ニュースを追加
zrank(key, member): スコアに従って小さいものから大きいものまで返します。つまり、収集されたニュースが新しいものから古いものの順に並べ替えられます
;
zrangebyscore(key, min, max): ニュースのページめくり表示を実現するために使用される、最初から最後までのスコアのセットを返します。
大家讲道理2017-04-22 09:01:31
キー: 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 出力だけが必要です。
阿神2017-04-22 09:01:31
1階の答えは非常に良いですが、ここでredisをキャッシュとして使用する必要はなく、データストレージとして使用するだけであることを付け加えておきます。redisはデータベースでもあるためです