Redis常见应用场景

news2024/11/15 12:08:50

目录

一、实现博客点赞功能

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

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

四、实现关注推送

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.coloradmin.cn/o/2141519.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[NSSRound#4 SWPU]hide_and_seek-用gdb调试

看反汇编 ; __unwind { .text:0000000000001514 F3 0F 1E FA endbr64 .text:0000000000001518 55 push rbp .text:0000000000001519 48 89 E5 mov rbp, rsp .text:000000000000151C 53 …

python tkinter

基本使用 基于tkinter创建 GUI基本四步:窗口->组件->布局->事件 1.创建窗口对象 from tkinter import *root Tk() # 创建窗口root.mainloop() # 进入事件循环 2.创建组件 按钮文本等组件 btn Button(root) # 创建Button组件,使组件在…

re题(25)BUUFCTF-[GUET-CTF2019]re

BUUCTF在线评测 (buuoj.cn) 查下壳,是upx壳 脱一下 查看字符串,定位到主函数,也可以用ctrlE的方式找到主函数 明显,sub_4009AE是对flag加密的关键函数 进入sub_4009AE看一下 看到这儿有一堆大数和方程,我们知道要用z…

Transformer模型详细步骤

Transformer模型是nlp任务中不能绕开的学习任务,我将从数据开始,每一步骤都列举出来,然后对应重点的代码进行讲解 ------------------------------------------------------------------------------------------------------------- Trans…

Skytower

一、安装配置靶机 下载地址: SkyTower: 1 ~ VulnHub 下载之后解压发现是VirtualBox格式的 我们下载一个VirtualBox,这是官网 Downloads – Oracle VirtualBox 安装到默认路径就 打开后点击注册 选择解压后的vbox文件 然后点击左上角管理 点击导出虚拟电脑&…

PCIe进阶之TL:Request Handling Rules

1 Handling of Received TLPs 本节介绍接收到的 TLP 在数据链路层经过完整性验证之后,这些 TLP 在事务处理层时的处理方式。这些规则如下图所示: 接收侧会忽略保留字段。如果 Fmt 字段显示存在至少一个 TLP Prefix : (1)通过检查后续 DWORD 的第一个字节中的 Fmt 字段,…

两个人群填充参考(CHN100K和NARD)

分别是中国人群和东北亚人群的填充参考,测试了下,中国人群的参考注册还是相对友好的,没有像有些网站一样严格限制。东北亚的没有测试,两个数据库的特点都是包含了少数民族,研究朝鲜或蒙古族或其他民族的同学&#xff0…

Java 枚举 新特性

Java 枚举(enum)自JDK 1.5引入以来,随着版本的升级不断增强。本文将回顾枚举的演进,尤其是结合switch语句的应用,展示枚举如何在现代Java中变得更加灵活。 1. JDK 1.5:Java 枚举的诞生 在JDK 1.5之前&…

Dbt基本概念与快速入门

在过去的几年里,数据科学界已经慢慢地接受了以数据为中心的范式。我们不仅关注日益复杂的机器学习模型,还要更多地关注数据质量。这使得数据工程、分析工程领域技术和工具成为热点。dbt(数据构建工具)是一个显著改善数据工程师生活的工具。它的目的是向数…

【漏洞复现】金某云星空ERP GetImportOutData .net反序列化漏洞

免责声明: 本文内容旨在提供有关特定漏洞或安全漏洞的信息,以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步,并非出于任何恶意目的。阅读者应该明白,在利用本文提到的漏洞信息或进行相关测…

Chinese Spelling Correction as Rephrasing Language Model(AAAI2024)

Chinese Spelling Correction as Rephrasing Language Model(AAAI2024) 一.概述 目前最先进的方法将CSC(Chinese Spelling Correction)作为序列标注任务,并在句子对上微调基于bert的方法。然而,我们注意到在将一个字符标注为另一个字符的过…

springboot+mybatis+mysql仿百度网盘系统2.0

springbootmybatismysql仿百度网盘系统2.0 一、系统介绍二、功能展示1.用户登陆2.主页3.全部文件4.文件上传5.文件分享6.文件分类 三、其它1.其他系统实现 一、系统介绍 系统主要功能: 普通用户:用户登陆、主页、全部文件、上传文件、文件分类、文件分部…

初始爬虫6

数据提取 数据提取总结 响应分类 结构化 json数据(高频出现) json模块 jsonpath模块 xml数据(低频出现) re模块 …

AJAX 入门 day3

目录 1.XMLHttpRequest 1.1 XMLHttpRequest认识 1.2 用ajax发送请求 1.3 案例 1.4 XMLHttpRequest - 查询参数 1.5 XMLHttpRequest - 数据提交 2.Promise 2.1 Promise认识 2.2 Promise - 三种状态 2.3 案例 3.封装简易版 axios 3.1 封装_简易axios_获取省份列表 3…

TS - tsconfig.json 和 tsconfig.node.json 的关系,如何在TS 中使用 JS 不报错

目录 1,前言2,二者关系2.1,使用 3,遇到的问题3.1,TS 中使用 JS 1,前言 通过 Vite 创建的 Vue3 TS 项目,根目录下会有 tsconfig.json 和 tsconfig.node.json 文件,并且存在引用关系…

【云原生监控】Prometheus之PushGateway

Prometheus之PushGateway 文章目录 Prometheus之PushGateway介绍作用资源列表基础环境一、部署PushGateway1.1、下载软件包1.2、解压软件包1.3、编辑配置systemctl启动文件1.4、创建日志目录1.5、加载并启动1.6、监控端口1.7、访问PushGateway 二、 配置Prometheus抓取PushGate…

超声波测距

基本原理:超声波测距是通过发射超声波到物体表面再反射回来,通过测量声波传播的时间来计算距离的方法。 公式解释: ( L C \times T ) ( L ):距离(从发射头到接收头的总距离)( C ):声波的传播速…

汉王手写签批控件如何在谷歌、火狐、Edge等浏览器使用

背景 近日,有网友咨询汉王手写签批控件是否可以通过allWebPlugin中间件技术加载到谷歌、火狐、Edge等浏览器?为此,笔者详细了解了一下汉王手写签批控件,它是一个标准的ActiveX控件,曾经主要在IE浏览器使用,…

Spring为什么要用三级缓存解决循环依赖?

Spring为什么要用三级缓存解决循环依赖? 1. Spring是如何创建一个bean对象2. Spring三级缓存2.1 一级缓存:单例池,经历过完整bean生命,单例Bean对象2.2 二级缓存:提前暴露的Bean2.3 三级缓存:打破循环 3. S…

【CMake】使用CMake在Visual Studio 构建多cpp文件项目

首先,我们在 C m a k e Cmake Cmake文件下写入以下代码: #需求的最低cmake程序版本 cmake_minimum_required(VERSION 3.12)#本工程的名字 project(OpenGL)#支持的C版本 set(CMAKE_CXX_STANDARD 20)#本工程主程序文件及输出程序名称,生成exe …