mysql+redis点赞功能剖析
最近在一个应用上需要用到点赞的功能,因为点赞的功能比较常用,很多人看到了大拇指就点了上去,如果单单采用mysql的方式的话可以会对数据库造成很大的压力。
我看了下网上一些博主的提供的解决方案,主要以mysql+redis配合使用居多,但太多的细节没有提到。在这里我说下我的思路。
1,使用场景分析
用户点赞在很多时候都是随手就点了,所以数据量比较高。
因为随手点的原因,有些人会点错,对于部分人来说,可能有强迫症,点错了必须取消,所以这里可能会存在二次访问。
2,流程分析
我们可以将点赞开发成一个api接口,使用传递uid,和资讯id(简写 zid)到接口。
接口程序首先查找redis里面是否存储该资讯的信息。
如果资讯不存在,
1先使用新建缓存 zid+资讯类别 redis自增1,.
2使用redis list 存入将要写入数据库的数据。max(100)
如果资讯存在
1先使用新建缓存 zid+资讯类别 redis自增1。
2使用redis list 存入将要写入数据库的数据。max(100)
3,判断该list数据是否等于100,如果等于,将list取出来赋值给放到一个新的数据里面,清空list,然后执行插入操作。
这种情况下不考虑用户是否实际点过赞,数据重复的情况可以在插入操作中通过异常捕获来获取,降低数据库的查询消耗。

浙公网安备 33010602011771号