点赞模块设计:Redis缓存 + 定时写入数据库实现高性能点赞功效

 行业新闻     |      2022-08-07 00:58

yobo体育官网下载全站app-官网入口

本文摘要:作者:solocoder泉源:juejin.im/post/5bdc257e6fb9a049ba410098本文基于 SpringCloud, 用户提倡点赞、取消点赞后先存入 Redis 中,再每隔两小时从 Redis 读取点赞数据写入数据库中做持久化存储。点赞功效在许多系统中都有,但别看功效小,想要做好需要思量的工具还挺多的。 点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。

yobo体育官网下载全站app

作者:solocoder泉源:juejin.im/post/5bdc257e6fb9a049ba410098本文基于 SpringCloud, 用户提倡点赞、取消点赞后先存入 Redis 中,再每隔两小时从 Redis 读取点赞数据写入数据库中做持久化存储。点赞功效在许多系统中都有,但别看功效小,想要做好需要思量的工具还挺多的。

点赞、取消点赞是高频次的操作,若每次都读写数据库,大量的操作会影响数据库性能,所以需要做缓存。至于多久从 Redis 取一次数据存到数据库中,凭据项目的实际情况定吧,我是暂时设了两个小时。项目需求需要检察都谁点赞了,所以要存储每个点赞的点赞人、被点赞人,不能简朴的做计数。文章分四部门先容:Redis 缓存设计及实现数据库设计数据库操作开启定时任务持久化存储到数据库一、Redis 缓存设计及实现1.1 Redis 安装及运行Redis 安装请自行查阅相关教程。

说下Docker 安装运行 Redisdocker run -d -p 6379:6379 redis:4.0.8如果已经安装了 Redis,打开下令行,输入启动 Redis 的下令redis-server1.2 Redis 与 SpringBoot 项目的整合3.编写 Redis 设置类 RedisConfig至此 Redis 在 SpringBoot 项目中的设置已经完成,可以愉快的使用了。1.3 Redis 的数据结构类型Redis 可以存储键与5种差别数据结构类型之间的映射,这5种数据结构类型划分为String(字符串)、List(列表)、Set(荟萃)、Hash(散列)和 Zset(有序荟萃)。

下面来对这5种数据结构类型作简朴的先容:1.4 点赞数据在 Redis 中的存储花样用 Redis 存储两种数据,一种是记载点赞人、被点赞人、点赞状态的数据,另一种是每个用户被点赞了几多次,做个简朴的计数。由于需要记载点赞人和被点赞人,另有点赞状态(点赞、取消点赞),还要牢固时间距离取出 Redis 中所有点赞数据,分析了下 Redis 数据花样中 Hash 最合适。因为 Hash 里的数据都是存在一个键里,可以通过这个键很利便的把所有的点赞数据都取出。

这个键内里的数据还可以存成键值对的形式,利便存入点赞人、被点赞人和点赞状态。设点赞人的 id 为 likedPostId,被点赞人的 id 为 likedUserId ,点赞时状态为 1,取消点赞状态为 0。将点赞人 id 和被点赞人 id 作为键,两个 id 中间用 :: 离隔,点赞状态作为值。

所以如果用户点赞,存储的键为:likedUserId::likedPostId,对应的值为 1。取消点赞,存储的键为:likedUserId::likedPostId,对应的值为 0。取数据时把键用 :: 切开就获得了两个id,也很利便。

(Redis常晤面试题,可以参考这里)在可视化工具 RDM 中看到的是这样子1.5 操作 Redis将详细操作方法封装到了 RedisService 接口里RedisService.java实现类 RedisServiceImpl.java用到的工具类和枚举类RedisKeyUtils, 用于凭据一定规则生成 key二、数据库设计数据库表中至少要包罗三个字段:被点赞用户id,点赞用户id,点赞状态。再加上主键id,建立时间,修改时间就行了。建表语句对应的工具 UserLike三、数据库操作操作数据库同样封装在接口中LikedServiceLikedServiceImpl 实现类数据库的操作就这些,主要还是增删改查。四、开启定时任务持久化存储到数据库定时任务 Quartz 很强大,就用它了。

Quartz 使用步骤:1.添加依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-quartz</artifactId></dependency>2.编写设置文件3.编写执行任务的类继续自 QuartzJobBean在定时任务中直接挪用 LikedService 封装的方法完成数据同步。以上就是点赞功效的设计与实现,不足之处还请列位大佬多多指教。如有更好的实现方案接待在评论区交流…代码出自开源项目 CodeRiver,接待围观:https://github.com/cachecats/coderiver。


本文关键词:点赞,模块,设计,Redis,缓存,定时,写入,yobo体育app官网入口,数据库

本文来源:yobo体育app官网入口-www.yidezc.com