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

Redis系列学习文章分享---第九篇(Redis快速入门之好友关注--关注和取关 -共同关注 -Feed流实现方案分析 -推送到粉丝收件箱 -滚动分页查询)

Redis的实战篇-好友关注

目录

  1. 好友关注-关注和取关
  2. 好友关注-共同关注
  3. 好友关注-Feed流实现方案分析
  4. 好友关注-推送到粉丝收件箱
  5. 好友关注-滚动分页查询收件箱的思路
  6. 好友关注-实现滚动分页查询

在这里插入图片描述

1. 好友关注-关注和取关

1.1 概述

在好友关注系统中,用户可以关注其他用户,也可以取消关注。

1.2 示例代码

Jedis jedis = new Jedis("localhost", 6379);// 关注用户
String userId = "user123";
String friendId = "friend456";
jedis.sadd("following:" + userId, friendId);// 取消关注用户
jedis.srem("following:" + userId, friendId);

2. 好友关注-共同关注

2.1 概述

共同关注指的是两个用户都关注了同一个用户,可以用于发现共同兴趣的朋友。

2.2 示例代码

Jedis jedis = new Jedis("localhost", 6379);// 获取共同关注的用户
String user1Id = "user123";
String user2Id = "user456";
Set<String> commonFollowing = jedis.sinter("following:" + user1Id, "following:" + user2Id);
System.out.println("共同关注的用户: " + commonFollowing);

3. 好友关注-Feed流实现方案分析

在这里插入图片描述

3.1 概述

Feed流是根据用户关注的人发布的内容动态生成的流,用户可以看到自己关注的人的最新动态。

3.2 实现方案

可以使用Redis的有序集合(sorted set)来存储用户发布的内容,按照时间戳作为分数,实现按时间排序的功能。


4. 好友关注-推送到粉丝收件箱

4.1 概述

当用户发布新的内容时,需要将这些内容推送到其粉丝的收件箱中,以便粉丝能够及时看到。

4.2 示例代码

Jedis jedis = new Jedis("localhost", 6379);// 将用户发布的内容推送到粉丝的收件箱中
String userId = "user123";
String content = "今天发现了一家很不错的餐厅!";
Map<String, String> post = new HashMap<>();
post.put("userId", userId);
post.put("content", content);
String postId = String.valueOf(System.currentTimeMillis());
jedis.hmset("post:" + postId, post);// 获取粉丝列表
Set<String> followers = jedis.smembers("followers:" + userId);
for (String follower : followers) {jedis.lpush("inbox:" + follower, postId);
}

5. 好友关注-滚动分页查询收件箱的思路

5.1 概述

滚动分页查询收件箱是指用户可以一次获取一定数量的收件箱内容,并且可以不断滚动加载更多内容。

5.2 实现思路

可以使用Redis的列表(list)来存储收件箱内容,用户可以通过分页获取列表中的内容,并根据需要滚动加载更多内容。


6. 好友关注-实现滚动分页查询

6.1 概述

实现滚动分页查询,让用户能够方便地浏览自己收件箱中的内容。

6.2 示例代码

Jedis jedis = new Jedis("localhost", 6379);// 滚动分页查询收件箱内容
String userId = "user123";
int pageNum = 1;
int pageSize = 10;
List<String> inbox = jedis.lrange("inbox:" + userId, (pageNum - 1) * pageSize, pageNum * pageSize - 1);
for (String postId : inbox) {Map<String, String> post = jedis.hgetAll("post:" + postId);System.out.println("Post ID: " + postId + ", Content: " + post.get("content"));
}

感谢您阅读本篇Redis实战篇-好友关注的技术博客!如果您有任何问题或建议,请随时在评论区留言。

http://www.lryc.cn/news/321486.html

相关文章:

  • 数据库基本介绍及编译安装mysql
  • 代码随想录算法训练营第55天 | 583. 两个字符串的删除操作, 72. 编辑距离
  • Guava之EventBus源码分析
  • Spark on Yarn安装配置
  • Debezium日常分享系列之:Debezium 2.5.3.Final发布
  • elment-ui el-tabs组件 每次点击后 created方法都会执行2次
  • sheng的学习笔记-AI-Network in Network(NIN)和1*1卷积
  • 【靶机测试--PHOTOGRAPHER: 1【php提权】】
  • LeetCode每日一题——删除有序数组中的重复项
  • 元宇宙VR数字化艺术展降低办展成本
  • 聚类分析 | Matlab实现基于PCA+DBO+K-means的数据聚类可视化
  • 使用 git 先提交后拉取的时候远程分支不允许问题
  • Unity 创建快捷方式开机自动启动
  • 什么是docker(docker客户端、镜像、容器、仓库)
  • [Python人工智能] 四十三.命名实体识别 (4)利用bert4keras构建Bert+BiLSTM-CRF实体识别模型
  • Android Framework开发之Linux +Vim命令
  • MySQL 索引的10 个核心要点
  • MaixSense-A010 接入 ROS
  • 使用WordPress在US Domain Center上建立招聘网站的详细教程
  • C++:类和对象(上篇)
  • 氧化铝电容的工艺结构原理及选型参数总结
  • 野火ESP8266模块开发-基于Arduino IDE
  • [Qt学习笔记]Qt实现自定义控件SwitchButton开关按钮
  • 【工具】mac 环境配置
  • 【前端寻宝之路】学习和总结HTML的标签属性
  • kafka2.x版本配置SSL进行加密和身份验证
  • Linux和Windows下的文件批量重命名
  • stm32之GPIO电路介绍
  • Unity Toggle处理状态变化事件
  • UE5.1 iClone8 正确导入角色骨骼与动作