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

 书友67299131 发布于 2022-10-25 08:40

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

4 个回答
  • 1楼的回答很好了,只是来补充一句,这里没必要把redis当成缓存了,直接作为数据存储吧,因为redis也是数据库

    2022-10-26 14:37 回答
  • key: news_fav_uid
    value: 新闻ID的集合(数组)
    其中uid是用户ID.
    $news_ids = array(1024,1025,1026);
    echo json_encode($news_ids);
    无论你用的是Memcached/Redis/MySQL都可以这样存储.
    array_push把新的收藏压到$news_ids数组的末尾.
    你要按时间排序,只需要json_decode解码后array_reverse翻转数组后foreach输出.

    2022-10-26 14:37 回答
  • 使用排序集合zset;
    key为用户ID;
    member为新闻唯一性ID;
    score为以之前某一天开始的日期增量(比如,从2015-1-1日开始算,今天的score就是155?);有了score之后就取出来就不用再排序,直接显示;
    zadd(key, score, member):添加新闻
    zrank(key, member):按score从小到大返回,也就是收藏的新闻按日期从新往旧排序;
    zrangebyscore(key, min, max):返回score从start到end的集合,用来实现新闻的翻页显示;

    2022-10-26 14:37 回答
  • 如果新闻有ID或者唯一标识符的话。可以考虑用redis的集合类型。而且集合的唯一性,防止了重复添加问题!
    redis.sadd('personmark:userID',newsID);//向用户集合添加一个元素
    redis.smembers('personmark:userID');//一次性获取用户所有收集的新闻ID

    2022-10-26 14:38 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有