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

如何设计评论系统

一,需求

1,发布评论,支持回复楼层,楼中楼

2,评论读取排序,按照点赞数,时间排序

3,置顶评论,显示作者回复过,点赞过,@用户

4,系统敏感词评审

5,删除评论

6,管理平台,搜索,删除,评审等操作

二,分析及难点

量大,怎么存,存哪里,怎么做到高性能查询,及实现高效排序

不能用普通的表来存储,量大,查询效率不高

用redis ZSET,可实现排序

量的问题:这么多评论,可能几万条,甚至更多。导致zset存的量多大,怎么拆分。

怎么接受评论数据,可用mq进行削峰。

持久化,虽然要存redis,表里也需要存储的,可通过异步存储

从业务层级来说,主题对象是作者发布内容,其次是评论,评论也分第一次层级,回下面回复内容,及嵌套回复。

表结构设计

发布内容表:发布内容ID 发布内容 

评论表:评论ID 发布ID 层级标志( 0代表第一层评论)父层级ID 评论时间

redis zset存储,key 发布ID, number 评论人ID(第一层),sorce点赞数

评论内容呢,number只能用ID标识,需要另外存吗,String key = 发布ID+评论者ID,value=内容

评论回复呢,回复还有点赞数呢,还是用zset存储,key=发布者ID+评论人ID

number=当前回复人ID,sorce还是点赞数据,他的评论内容还是String存储

有层级结构:用hash存储呢,key field value,可以代替String 

key = 发布ID filed 论者ID value=内容,可以批量操作,批量取数据

高并发访问问题,热点评论问题

按理说,数据都放在redis,高并发访问问题不大,可以用多级缓存,和双检查锁

热点评论问题:还是导致,redis大key问题

mq消息积压问题,写入评论,立刻展示,后续逻辑比如落表,写缓存异步处理

相关文章:

  • 【计网】应用层
  • c语言程序设计--(数据的存储)冲刺考研复试面试简答题,看看我是怎么回答的吧!!!!!
  • C++设计模式总结
  • 最长递增子序列--蓝桥oj3046拍照
  • 深度学习|MAE技术全景图:自监督学习的“掩码魔法“如何重塑AI基础
  • FastExcel/EasyExcel简介以及源码解析
  • Ubuntu系统安装Minikube教程
  • π0及π0_fast的核心源码剖析——核心模块src的全面分析与解读:如何实现PaLI-Gemma、如何去噪生成动作
  • DTO 命名规范指南
  • 达梦数据库学习笔记@3
  • Unity DOTS 从入门到精通之 创建实体
  • Unity引擎使用HybridCLR(华佗)热更新
  • LangChain构建语言模型驱动应用的强大框架
  • 深入理解Linux网络随笔(四):内核是如何与用户进程协作的(下篇:多路I/O复用模型epoll)
  • c语言笔记 数组进阶题目的理解
  • 网络基础(一)【网络发展/认识协议/网络 VS 系统/以太网通信原理/重谈协议/网络中的地址管理】
  • 15 HarmonyOS NEXT UVList组件开发指南(二)
  • 先序二叉树的线索化,并找指定结点的先序后继
  • 1-1 驱动开发HelloWorld
  • 【定制开发】碰一碰发视频系统定制开发,支持OEM
  • 网站公司怎么做的好处/小程序开发平台
  • 工程项目管理软件app/太原百度推广排名优化
  • wordpress分页怎么写/清远网站seo
  • destoon 网站搬家/中国seo
  • 网站建设 尚瑞科技/营销对企业的重要性
  • 一个不懂技术的人如何做网站/热搜词排行榜