検索

ホームページ  >  に質問  >  本文

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

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

迷茫迷茫2763日前773

全員に返信(4)返信します

  • 巴扎黑

    巴扎黑2017-04-22 09:01:31

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

    返事
    0
  • 巴扎黑

    巴扎黑2017-04-22 09:01:31

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

    返事
    0
  • 大家讲道理

    大家讲道理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 出力だけが必要です。

    返事
    0
  • 阿神

    阿神2017-04-22 09:01:31

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

    返事
    0
  • キャンセル返事