点赞系统设计

阅读: 评论:0

点赞系统设计

点赞系统设计

中秋佳节,闲来无事,写了一个文章点赞服务,在此记录一下

场景

在阅读文章时,觉得好的文章都会点赞,表示对作者的鼓励支持,也可能最后取消点赞,有时会反复操作。

用户可能在个人中心查看自己的点赞列表,或他人对自己文章的点赞情况。所以在设计时可以添加一些重复的信息例如:头像、文章标题。

设计

数据结构设计:
  1. 点赞结构
type Like struct {ID             string `json:"id" valid:"required,uuid" jsonapi:"primary,likes"`// 用户IDUserID         string `json:"userID" valid:"required,uuid" jsonapi:"attr,userID"`// 文章idSourceID       string `json:"sourceID" valid:"required,uuid" jsonapi:"attr,sourceID"`// 其他数据,比如:头像、文章标题等(以字符串方式传入)Data           string `json:"data" jsonapi:"attr,data"`Deleted        bool   `json:"deleted" jsonapi:"attr,deleted"`CreatedTime    int64  `json:"createdTime" jsonapi:"attr,createdTime"`
}

Data字段传入其他额外信息,客户端自己解析出来即可,这样该服务就可以在其他地方使用时,不需要在添加新的字段。

  1. 点赞总数结构

    type LikeCount struct {ID             string `json:"id" valid:"required,uuid" jsonapi:"primary,likesCount"`Count          int    `json:"count" jsonapi:"attr,count"`// 可以是文章ID、也可以是用户IDSourceID       string `json:"sourceID" valid:"required,uuid" jsonapi:"attr,sourceID"`Deleted        bool   `json:"deleted" jsonapi:"attr,deleted"`CreatedTime    int64  `json:"createdTime" jsonapi:"attr,createdTime"`
    }
    

关于SourceID的说明,可以是文章ID、也可以是用户ID,这样可以直接获取文章的点赞总数,也可以获取用户获得的点赞总数。

接口设计

提供以下接口:

  • 点赞:没有点赞则点赞,已点赞则取消
  • 文章点赞总数获取
  • 根据文章获取点赞列表
  • 判断用户是否对文章点赞
  • 用户获得的点赞总数
效率

点赞是一个高频操作,可以使用redis来进行缓存,来降低对数据库的影响,提高xiaolv。该服务只是在自己的系统上使用,所以没有添加redis模块。

总结

以上开发使用的是golang + pgsql。欢迎交流学习

在我的个人网站中有使用,点击“顶一下”按钮,演示地址

本文发布于:2024-01-29 08:03:41,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170648662513858.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:系统
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23