Redis常见应用场景

目录

一、实现博客点赞功能

二、实现博客点赞用户列表功能

三、好友关注和取关以及求共同关注

四、实现关注推送

1、拉模式

2、推模式

3、推拉结合

四、三种模式对比


这里简单记录一下,没有实现方法,只是帮助记忆

一、实现博客点赞功能

可以通过set的结构将博客的业务名字+博客id作为键,点赞用户id作为值存储到redis中,查询的时候首先到redis中去判断这个博客是否被点过赞,然后封装一个有是否点赞字段的返回对象。

当发起点赞请求之后先到redis中判断这个博客的set信息中是否有当前用户,如果没有,则数据库点赞信息加一,并且添加,如果有,则把mysql点赞数减一,redis的删掉 。

当然这里用户的点赞信息也可以存到mysql库中持久存储,可以通过mq实现,点赞之后先存到redsi中,然后发送给mq去慢慢存到mysql中

二、实现博客点赞用户列表功能

首先我们可能会想到List,按照点赞的顺序去存入list当中,然后从同一侧取出,这样可以实现排序,set不支持排序,这里不考虑,zset可以根据score排序,我们可以把score设置成时间,根据点赞前后排序,值设置成用户的id,键设置成业务名字+博客id

三、好友关注和取关以及求共同关注

关注和取消关注首先先去数据库当中查询当前用户是否关注这个用户,数据库字段(id、用户id、关注的id,创建时间),如果没关注则点击关注,反之,然后再添加一个根据用户id查询关注列表的接口,每次关注一个人都保存到redis的set中key存为业务+当前用户id,值存为被关注用户的id,求共同关注的时候通过intersect求交集的id并查询用户信息。

四、实现关注推送

通过Feed流实现推送模式

采用timeline模式实现方案有三种:

  1. 拉模式
  2. 推模式
  3. 推拉结合
1、拉模式

也叫读扩散。

张三李四王五发布了相关信息到发件箱里,并携带时间戳,赵六查看时从各个发件箱中拉取信息并进行排序,缺点是耗时较长有延时

2、推模式

也叫写扩散

当张三李四发布消息的时候会直接推送到关注他的粉丝收件箱中并进行排序,延迟较低,但是缺点是内存占用比较低

这个文章简单介绍了一下推模式:

使用Redis实现用户关注博客的推模式-CSDN博客

3、推拉结合

也叫做读写混合,兼具推和拉两种模式的优点

对于粉丝有普通粉丝和活跃粉丝两种,对于活跃粉丝采用推模式,对于普通粉丝采用拉模式

活跃粉丝上线不需要主动拉取,效率较快,对于普通粉丝上线次数不多,主动拉取影响也不大

四、三种模式对比

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/879844.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

六、JSON

文章目录 1. 什么是JSON1.1 JSON 在 JavaScript 中的使用1.1.1 json 的定义1.1.2 json 的访问1.1.3 json 的两个常用方法 1.2、JSON 在 java 中的使用1.2.1、javaBean 和 json 的互转1.2.2、List 和 json 的互转1.2.3、map 和 json 的互转 1. 什么是JSON 1.1 JSON 在 JavaScrip…

【数据结构与算法 | 灵神题单 | 自顶向下DFS篇】力扣1022,623

1. 力扣1022:从根到叶的二进制之和 1.1 题目: 给出一棵二叉树,其上每个结点的值都是 0 或 1 。每一条从根到叶的路径都代表一个从最高有效位开始的二进制数。 例如,如果路径为 0 -> 1 -> 1 -> 0 -> 1,那…

Uniapp的alertDialog返回值+async/await处理确定/取消问题

今天在使用uniui的alertDialog时,想添加一个确定/取消的警告框时 发现alertDialog和下面的处理同步进行了,没有等待alaertDialog处理完才进行 查询后发现问题在于 await 关键字虽然被用来等待 alertDialog.value.open() 的完成,但是 alertDi…

Linux操作系统 进程(3)

接上文 Linux进程优先级之后,我们了解到僵尸进程与孤儿进程的形成原因,既然是因为父进程没有接收子进程的退出状态导致的,那么我们该如何去获取子进程的退出状态呢?那本篇文章将围绕这个问题来解释进程。 环境 : vsco…

【C++】——多态详解

目录 1、什么是多态? 2、多态的定义及实现 2.1多态的构成条件 ​2.2多态语法细节处理 2.3协变 2.4析构函数的重写 2.5C11 override 和 final关键字 2.6重载—重写—隐藏的对比分析 3、纯虚函数和抽象类 4、多态的原理分析 4.1多态是如何实现的 4.2虚函数…

光伏场地建设规划 - 华为OD统一考试(E卷)

2024华为OD机试(C卷D卷E卷)最新题库【超值优惠】Java/Python/C合集 题目描述 祖国西北部有一片大片荒地,其中零星的分布着一些湖泊,保护区,矿区;整体上常年光照良好,但是也有一些地区光照不太好。某电力公…

C++中模板的初级使用函数模板(刚刚接触模板概念的小白也能明白)

文章目录 模板分类函数模板函数模板的原理函数模板基本语法 —— typename 以及 class简单的函数模板多类型模板参数class 和 typename 的选择类模板 模板分类 模板的核心思想是让编译器在编译时生成适用于具体类型的代码,这个过程称为模板实例化。C 中的模板分为两…

Sublime Text 3 相关设置

打开设置 { “font_size”: 16, // 字体大小 “save_on_focus_lost”: true, // 自动保存 }

射击靶标检测系统源码分享

射击靶标检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

【吊打面试官系列-MySQL面试题】LIKE 声明中的%和_是什么意思?

大家好,我是锋哥。今天分享关于【LIKE 声明中的%和_是什么意思?】面试题,希望对大家有帮助; LIKE 声明中的%和_是什么意思? %对应于 0 个或更多字符,_只是 LIKE 语句中的…

Amazon Bedrock 模型微调实践(二):数据准备篇

本博客内容翻译自作者于 2024 年 9 月在亚马逊云科技开发者社区发表的同名博客: “Mastering Amazon Bedrock Custom Models Fine-tuning (Part 2): Data Preparation for Fine-tuning” 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、…

Leetcode—322. 零钱兑换【中等】(memset(dp,0x3f, sizeof(dp))

2024每日刷题&#xff08;159&#xff09; Leetcode—322. 零钱兑换 算法思想 dp实现代码 class Solution { public:int coinChange(vector<int>& coins, int amount) {int m coins.size();int n amount;int dp[m 1][n 1];memset(dp, 0x3f, sizeof(dp));dp[0][…

Django ORM(多表)

文章目录 前言一、关联关系模型二、一对多写入数据二、多对多写入数据二、跨表查询1.查找test 标签的文章2.查找作者名为 test 的文章及标签 三、跨表删除 前言 表与表之间的关系可分为以下三种&#xff1a; 一对一: 一对一关系表示一个模型的每个实例与另一个模型的每个实例…

【字符函数】strcpy函数(字符串复制函数)+strcat函数(字符串追加)+strcmp函数(字符串比较)【笔记】

1.复制函数--------------strcpy函数 函数使用 char*strcpy&#xff08;char* destination, const char* source&#xff09; strcpy函数用于拷贝字符串&#xff0c;即将一个字符串中的内容拷贝到另一个字符串中&#xff08;会覆盖原字符串内容&#xff09;。它的参数是两个指…

Mysql梳理6——order by排序

目录 6 order by排序 6.1 排序数据 6.2 单列排序 6.3 多行排列 6 order by排序 6.1 排序数据 使用ORDER BY字句排序 ASC&#xff08;ascend&#xff09;:升序DESC(descend):降序 ORDER BY子句在SELECT语句的结尾 6.2 单列排序 如果没有使用排序操作&#xff0c;默认…

【HarmonyOS NEXT】DevEco快速实现真机截屏,并保存到电脑

点日志点照机图标选一个路径保存图片在ide中右键图片&#xff0c;点复制电脑随便找个位置保存图片https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/ide-screenshot-V5

1-2.Jetpack 之 Navigation 跳转编码模板

一、Navigation 1、Navigation 概述 Navigation 是 Jetpack 中的一个重要成员&#xff0c;它主要是结合导航图&#xff08;Navigation Graph&#xff09;来控制和简化 Fragment 之间的导航&#xff0c;即往哪里走&#xff0c;该怎么走 2、Navigate 引入 在模块级 build.gra…

Datawhale------Tiny-universe学习笔记——Qwen(1)

1. Qwen整体介绍 对于一个完全没接触过大模型的小白来说&#xff0c;猛一听这个名字首先会一懵&#xff1a;Qwen是啥。这里首先解答一下这个问题。下面是官网给出介绍&#xff1a;Qwen是阿里巴巴集团Qwen团队研发的大语言模型和大型多模态模型系列。其实随着大模型领域的发展&a…

全同台加密综述

文章目录 一、FHE的定义与性质1、核心算法2、性质 二、构造思想三、全同态加密研究进展1、支持部分同态的 Pre-FHE 方案2、基于理想格的 第1代 FHE方案3、基于LWE的 第2代 FHE方案3、基于近似特征向量的 第3代 FHE方案4、支持浮点数运算的 第4代 FHE方案5、其他 FHE方案5.1、基…

数字化时代,住宅代理是怎样为企业赋能的?

在数字化时代&#xff0c;企业的发展也面临着转型&#xff0c;一方面是未知的挑战&#xff0c;一方面是不可多得的机遇。如何在全球市场中保持竞争力是企业要认真思考的问题。如果说主动寻找出路太过冒险&#xff0c;那不妨试试内省式的自我管理革新。代理服务器是一种中介服务…