点赞模块的实现思路

在现代应用程序中,点赞功能已经成为用户互动的重要方式。无论是社交媒体平台、新闻网站还是在线论坛,点赞功能都可以帮助用户表达对内容的认可和喜爱。

点赞功能的基本原理是将用户对某个内容的赞记录到数据库中。当用户点击点赞时,系统会检查此用户是否已经对该内容进行了点赞,并据此进行更新或新增数据。

因为业务方经常需要根据点赞数量排序,所以我们需要对每个业务的点赞数进行记录,这个功能我们会使用到mq来对点赞的数量进行更新。

我们对数据库的设计,涉及到两张表(点赞记录表,点赞数量记录表)。

点赞记录表会对用户进行点赞的业务进行记录。当用户对业务进行点赞或取消点赞的时候,需要根据这张表来判断当前用户是否已经对该业务进行过点赞。当用户对业务进行点赞,并且点赞成功,就会在该表中添加一条记录。当用户取消点赞,并且取消成功,就会删除该表中的一条记录。因此对于这张表,我们可以根据用户id和业务id来唯一确定这张表中的一条记录。

点赞数量表会对业务的点赞数进行记录。这张表的作用是,方便前端对页面信息进行渲染展示,满足用户需要根据业务点赞数进行排序的需求。每当点赞或取消点赞后,点赞数发生变化,我们就发送MQ通知到交换机上,交换机会根据需求将消息转发到对应的队列中供不同的微服务消费消息,更新此表数据。

以上就是对点赞模块的基础设计。但在高并发场景下,仍然会出现一些问题,每当用户对业务点赞或取消点赞都会访问数据库,而且数据库的并发量本来就不高,这样极有可能导致系统的崩溃。基于以上问题,我们考虑介入redis缓存来解决此问题,这里我设计了两个Redis缓存,一个是点赞记录缓存,他的key是业务id,值是一个set类型用来记录用户id,第二个是点赞数量缓存,他的key是业务类型,值是一个zset类型有存储业务id和业务点赞的数量作为score。

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

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

相关文章

个人博客搭建(二)—Typora+PicGo+OSS

个人博客站—运维鹿: http://www.kervin24.top CSDN博客—做个超努力的小奚: 做个超努力的小奚-CSDN博客 一、前言 博客搭建完一直没有更新,因为WordPress自带的文档编辑器不方便,以前用CSDN写作的时候,习惯了Typora。最近对比了…

【向量数据库】搜索算法

最近几年,一种叫做向量数据库的产品,正趁着AI的热潮开始崭露头角。伴随着AI时代的到来,向量将成为一种重要的数据形式,而传统数据库并不适合用来存储和检索向量数据,因此我们大约需要一种专门设计的数据库来处理这些问…

前端开发中常用的插件库

ahooks 一个高质量且可靠的React Hooks库。class-variance-authority(CVA) 是一个专注于解决CSS类管理问题的库。classnames 是一个在React开发中非常流行的JavaScript工具库,它可以帮助开发者有条件地连接类名字符串。copy-to-clipboard 一个…

什么是cline?

Cline 是一个功能强大的 AI 编程助手,专为 Visual Studio Code(VSCode)设计。它通过结合大语言模型(如 Claude、GPT 等)和工具链,帮助开发者自动化任务、生成代码、执行命令等。以下是对 Cline 的深入理解和…

启动tomcat出现的The JRE_HOME environment variable is not defined correctl

很久没使用Tomcat了,最近配置JDK 17 Tomcat 10,竟然报错 the JRE_HOME environment variable is not defined correctly很明显就是环境变量没有配置 JRE_HOME这个变量,但我明明是环境变量是配置了JAVA_HOME以及JRE_HOME这两个变量。 奇怪了…

ARM CCA机密计算安全模型之安全生命周期管理

安全之安全(security)博客目录导读 目录 一、固件启用的调试 二、CCA系统安全生命周期 三、重新供应 四、可信子系统与CCA HES 启用 CCA(机密计算架构)的安全系统是指 CCA 平台的实现处于可信状态。 由于多种原因,CCA 启用系统可能处于不…

[读书日志]从零开始学习Chisel 第八篇:Scala的集合(敏捷硬件开发语言Chisel与数字系统设计)

5.Scala的集合 Scala的集合包括数组,列表,集,映射,序列,元组,数组缓冲和列表缓冲等。 5.1 数组 5.1.1数组的定义 数组是计算机内一片地址连续的内存空间。数组元素类型可以是任意的,不同元素…

k8s排错集:zk集群的pod报错 Init:CrashLoopBackOff无法启动

zk三节点集群,zk-0无法启动 statefulset 进到该node节点上查看容器的报错日志,发现在初始化container的时候一个命令有问题 查看正常zk集群的pod的资源配置文件 解决办法: 修改资源配置文件 应该修改为 chown -R 1000:1000 /zkenv kubec…

Golang的并发编程框架比较

# Golang的并发编程框架比较 中的并发编程 在现代软件开发中,处理高并发的能力愈发重要。Golang作为一门支持并发编程的编程语言,提供了丰富的并发编程框架和工具,使得开发者能够更轻松地处理并发任务。本文将介绍Golang中几种常用的并发编程…

【Web】软件系统安全赛CachedVisitor——记一次二开工具的经历

明天开始考试周,百无聊赖开了一把CTF,还顺带体验了下二开工具,让无聊的Z3很开心🙂 CachedVisitor这题 大概描述一下:从main.lua加载一段visit.script中被##LUA_START##(.-)##LUA_END##包裹的lua代码 main.lua loca…

单纯形法的学习笔记

文章目录 A. 单纯形法概述1. 优化模型示例 B. 理论基础C. 算法思想D. 实现算法1. 线性规划的标准型2. 顶点解的理解及表示2.1 在标准型中变量取值为零的意义2.2 顶点解的表示 3. 最优性判断4. 解的更新5. 完成迭代过程 E. 单纯形法的基本概念与本文对照F. 文档源码 前言&#x…

【VBA】【EXCEL】将某列内容横向粘贴到指定行

Sub CopyRowToColumn()On Error GoTo ErrorHandler 添加错误处理Application.ScreenUpdating FalseApplication.Calculation xlCalculationManualApplication.EnableEvents False 禁用事件处理Dim lastCol As LongDim lastRow As LongDim i As Long, colCount As LongDim …

【vue3封装element-plus的反馈组件el-drawer、el-dialog】

vue2中封装el-drawer、el-dialog这类反馈类子组件,需要将父组件的visible值传递子组件,并且再通过$emit将关闭弹窗的组件值传回父组件,同时子组件还需要监听父组件传递过来的visible的值,来驱动弹窗显示隐藏,很麻烦&am…

JS进阶--JS听到了不灭的回响

作用域 作用域(scope)规定了变量能够被访问的“范围”,离开了这个“范围”变量便不能被访问 作用域分为局部和全局 局部作用域 局部作用域分为函数和块 那 什么是块作用域呢? 在 JavaScript 中使用 { } 包裹的代码称为代码块…

杭州市有哪些大学能够出具论文检索报告?

杭州市具有查收查引服务的学校有浙江大学、杭州电子科技大学、浙江工业大学、杭州师范大学等高校。 1、浙江大学图书馆 浙江大学图书馆提供文献查收查引服务,包括查询学术论文被SCIE、SSCI、A&HCI、EI、CPCI-S、CPCI-SSH、CSSCI、CSCD等国内外权威数据库收录和…

计算机网络 (26)互联网的路由选择协议

一、路由选择协议的基本概念 路由选择协议是计算机网络中用于确定数据包在网络中传输路径的一种协议。它帮助路由器构建和维护路由表,以便根据目的地址将数据包转发到正确的下一跳路由器。路由选择协议分为静态路由选择协议和动态路由选择协议两大类。 二、静态路由…

Spring项目创建流程及配置文件bean标签参数简介

1. 项目搭建流程 1. pom.xml中引入依赖Spring-webMVC <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><…

左神算法基础巩固--2

文章目录 稳定性选择排序冒泡排序插入排序归并排序快速排序堆排序 哈希表链表解题 稳定性 稳定性是指算法在排序过程中保持相等元素之间相对顺序的特性。具体来说&#xff0c;如果一个排序算法是稳定的&#xff0c;那么对于任意两个相等的元素&#xff0c;在排序前它们的相对顺…

UART串口数据分析

串口基础知识详细介绍&#xff1a; 该链接详细介绍了串并行、单双工、同异步、连接方式 https://blog.csdn.net/weixin_43386810/article/details/127156063 该文章将介绍串口数据的电平变化、波特率计算、脉宽计算以及数据传输量的计算。 捕获工具&#xff1a;逻辑分析仪&…

机器学习模型评估指标

模型的评估指标是衡量一个模型应用于对应任务的契合程度&#xff0c;常见的指标有&#xff1a; 准确率&#xff08;Accuracy&#xff09;: 正确预测的样本数占总样本数的比例。适用于类别分布均衡的数据集。 精确率&#xff08;Precision&#xff09;: 在所有被预测为正类的样…