当前位置: 首页 > news >正文

商丘企业网站建设公司北京网站建设上石榴汇

商丘企业网站建设公司,北京网站建设上石榴汇,青岛网站建设公司怎么样,软文营销为什么要讲故事【遇见青山】基于Redis的Feed流实现案例1.关注推送2.具体代码实现1.关注推送 关注推送也叫做Feed流#xff0c;直译为投喂。为用户持续的提供沉浸式”的体验#xff0c;通过无限下拉刷新获取新的信息。 Feed流产品有两种常见模式#xff1a; 这里我们实现基本的TimeL… 【遇见青山】基于Redis的Feed流实现案例1.关注推送2.具体代码实现1.关注推送 关注推送也叫做Feed流直译为投喂。为用户持续的提供沉浸式”的体验通过无限下拉刷新获取新的信息。 Feed流产品有两种常见模式 这里我们实现基本的TimeLine Feed流模式 的TimeLine Feed流模式有三种基本的实现方案 拉模式也叫做读扩散 推模式也叫做写扩散 推拉结合模式也叫做读写混合兼具推和拉两种模式的优点 Feed流的实现方案分析 点评类网站或App宜使用推模式短视频类网站或App宜使用推拉结合模式⛷️ 2.具体代码实现 需求分析 修改新增探店笔记的业务在保存blog到数据库的同时推送到粉丝的收件箱收件箱满足可以根据时间戳排序必须用Redis的数据结构实现查询收件箱数据时可以实现分页查询 分析实现滚动分页的方式 Feed流中的数据会不断更新所以数据的角标也在变化因此不能采用传统的分页模式而要采用滚动分页Redis数据结构中终于List和SortedSet支持分页但List不支持滚动分页功能所以Redis数据结构我们宜采用SortedSet 首先在保存博客的时候要推送给所有的粉丝收件箱 /*** 保存博客** param blog 博客对象* return 博客的ID*/ Override public Result saveBlog(Blog blog) {// 获取登录用户UserDTO user UserHolder.getUser();blog.setUserId(user.getId());// 保存探店博文boolean isSave save(blog);if (!isSave) {return Result.fail(新增笔记失败);}// 查询笔记作者的所有粉丝ListFollow follows followService.query().eq(follow_user_id, user.getId()).list();for (Follow follow : follows) {Long userId follow.getUserId();// 开始推送stringRedisTemplate.opsForZSet().add(FEED_KEY userId, blog.getId().toString(), System.currentTimeMillis());}// 返回idreturn Result.ok(blog.getId()); }实现具体的滚动分页查询 /*** 滚动分页查询Feed流推送的博客** param max 上一次查询的最小值用于实现滚动查询* param offset 偏移量防止查询到重复数据* return Result*/ Override public Result queryBlogOfFollow(Long max, Integer offset) {// 获取当前用户Long userId UserHolder.getUser().getId();// 查询当前用户的收件箱SetZSetOperations.TypedTupleString tuples stringRedisTemplate.opsForZSet().reverseRangeByScoreWithScores(FEED_KEY userId, 0, max, offset, DEFAULT_PAGE_SIZE);if (tuples null || tuples.isEmpty()) {return Result.ok();}// 创建集合保存idArrayListLong ids new ArrayList(tuples.size());// 保存最小时间long minTime 0;// 保存偏移量int os 1;// 开始解析数据得到最终的idsminTimeoffsetos值for (ZSetOperations.TypedTupleString tuple : tuples) {// 获取id并保存ids.add(Long.valueOf(Objects.requireNonNull(tuple.getValue())));// 获取分数时间戳long time Objects.requireNonNull(tuple.getScore()).longValue();if (time minTime) {os;} else {// 最后一个元组的时间一定是最小时间minTime time;// 重置偏移量os 1;}}String idStr StrUtil.join(,, ids);// 根据id查询blogListBlog blogs query().in(id, ids).last(ORDER BY FIELD(id, idStr )).list();// 给每个blog封装点赞作者等信息for (Blog blog : blogs) {// 查询blog有关的用户queryBlogUser(blog);// 查询blog的点赞信息当前用户是否点过赞isBlogLiked(blog);}// 返回博客集合给前端ScrollResult scrollResult new ScrollResult();scrollResult.setList(blogs);scrollResult.setMinTime(minTime);scrollResult.setOffset(os);return Result.ok(scrollResult); }
http://www.tj-hxxt.cn/news/217638.html

相关文章:

  • 东营市城乡建设局网站在线网站建设课程
  • 深圳网站建设公司哪里有广告设计网站都有哪些
  • 山东济南网站建设公司排名三位数的域名网站
  • 濮阳网站开发刷关键词排名seo
  • 网站搭建哪里找有名气做网站图片用什么格式最好
  • 做家政网上推广网站网站的整体风格包括
  • 外贸网站推广方法毕业设计指导网站开发
  • 哪里有做网站的团购网站怎么推广
  • 织梦 蓝色 个人网站博客网站源码怎么分析网站设计
  • 做网站定金是多少重庆建设招标网站
  • 电商网站开发教材网站为什么突然访问不了
  • 网页制作素材库哪个网站龙口网站制作多少钱
  • 饰品网站设计方案网页设计需要考什么证
  • 宣传手册设计模板外贸网站谷歌优化
  • 东莞网站建设制作公司传奇世界网游
  • 建设网站赚钱wordpress主题二次元模板
  • 河北综合网站建设系列无锡市梁溪区建设局网站
  • 做蛋糕网站有哪些seo 适合哪些行业
  • 南京高端网站开发做企业网站用什么软件
  • 一个网站一年要多少钱网站字体设计重要性
  • html5电影网站设计论文百度公司推广电话
  • 吉林省建设工程信息网站学校二级学院网站建设
  • 12306网站很难做吗邢台企业网站制作公司
  • 建设部执业资格网站建小说网站需要多少钱
  • 织梦 xml 网站地图做网站用什么颜色好
  • 企业网站的建设 摘要行业网站作用
  • 如何推进网站建设没有网站怎样做外贸
  • 门户网站建设管理工作方案网站建设所需的硬件设备
  • 微信支付申请网站吗域名与网站
  • 网站建设市场调研网店网站设计