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

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、推模式

也叫写扩散

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

3、推拉结合

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

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

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

四、三种模式对比


http://www.kler.cn/a/306315.html

相关文章:

  • 【云计算解决方案面试整理】1-2云计算基础概念及云计算技术原理
  • 【C#设计模式(8)——过滤器模式(Adapter Pattern)】
  • 使用pytest+openpyxl做接口自动化遇到的问题
  • 算法演练----24点游戏
  • Xshell,Shell的相关介绍与Linux中的权限问题
  • PHP搭建开发环境(Windows系统)
  • fsck 命令:修复文件系统错误
  • 读构建可扩展分布式系统:方法与实践05分布式缓存
  • 2-3.Android 存储之存储空间(私有空间、公共空间)
  • 【Android】Room—数据库的基本操作
  • 第108集《大佛顶首楞严经》
  • CAD_Electrical 2022使用记录
  • [Python学习日记-23] Python v2 和 v3 中的字符编码
  • python定时任务,定时爬取水质和天气
  • Navicat On-Prem Server 2.0 | MySQL与MariaDB基础管理功能正式上云
  • Windows电脑A远程连接电脑B
  • Java面试篇基础部分-Java反射机制是什么
  • 镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态
  • Lua闭包
  • 基于yolov5的混凝土缺陷检测系统python源码+onnx模型+评估指标曲线+精美GUI界面
  • 【Linux C | 终端设备】Linux下 tty、ttyS*、ttyAMA*、console 的区别,以及系统输出重定向(附带代码)
  • NPM私库搭建-verdaccio(Linux)
  • 【Kubernetes】常见面试题汇总(十七)
  • Django+Vue基于OpenCV的人脸识别系统的设计与实现
  • CleanMyMac X 4.15.6正式版 mac直装破解版
  • 小阿轩yx-案例:Zabbix监控kubernetes云原生环境