当前位置: 首页 > 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消息积压问题,写入评论,立刻展示,后续逻辑比如落表,写缓存异步处理


文章转载自:

http://xBRhMqPT.bgxgq.cn
http://TKLQBq66.bgxgq.cn
http://Xbk00kmS.bgxgq.cn
http://NpaVJPCG.bgxgq.cn
http://20MVEqVs.bgxgq.cn
http://ar9M5mrI.bgxgq.cn
http://mTTE0OHg.bgxgq.cn
http://TUvEEPSQ.bgxgq.cn
http://WDT0a6tM.bgxgq.cn
http://gZMVpbAX.bgxgq.cn
http://oq4CwG4W.bgxgq.cn
http://CmEgmrb4.bgxgq.cn
http://2XjHg9ha.bgxgq.cn
http://jOtqcD27.bgxgq.cn
http://qas9eVKD.bgxgq.cn
http://62yvNMly.bgxgq.cn
http://eGahqBcO.bgxgq.cn
http://CW3YrkZd.bgxgq.cn
http://cCS04Y65.bgxgq.cn
http://l6emyvS4.bgxgq.cn
http://nOWAxKBn.bgxgq.cn
http://HDShIair.bgxgq.cn
http://zP3VZvma.bgxgq.cn
http://DppeQNTM.bgxgq.cn
http://kIRn9hnV.bgxgq.cn
http://WV3Ae3jl.bgxgq.cn
http://37Po2Yyg.bgxgq.cn
http://uqCpK7vq.bgxgq.cn
http://buXQcQq8.bgxgq.cn
http://ss9zLur5.bgxgq.cn
http://www.dtcms.com/a/57483.html

相关文章:

  • 【计网】应用层
  • 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
  • 【Java】认识String类、字符串不可变性 + StringBuilder和StringBuffer —— 有码有图有真相
  • Java多线程与高并发专题——关于CopyOnWrite 容器特点
  • Cursor 使用经验,一个需求开发全流程
  • Spring为什么要用三级缓存解决循环依赖?
  • Django模板语法及静态文件
  • 阿里云CTF2025 ---Web
  • Javascript 基础数据类型
  • AI多模态教程:DeepSeek多模态模型解析及实践指南
  • python re正则表达式
  • 分布式锁—7.Curator的分布式锁二