用 Redis 如何实现朋友圈点赞功能?
回答
1、功能分析
-
首先,我们需要分析下朋友圈点赞需要有哪些功能
- 记录某个朋友圈的点赞数量,
- 支持点赞数数量的查看,
- 支持点赞和取消点赞操作。
- 支持查看哪些人点过赞,
- 点赞的顺序是可以看得到的
2、实现思路
- 数据结构上,我们可以采用Redis ZSet 来实现,
- ZSET 的 KEY 就是这个具体的朋友圈的 ID,
- ZSET 的 value 表示点赞用户的 ID,
- ZSET 的 score 表示点赞的时间。
3、具体实现
-
使用字符串存储每篇朋友圈的 ID,作为有序集合的 KEY
-
使用 ZSet 存储每篇朋友圈的点赞用户信息,其中 value 为点赞用户的 ID,score 为点赞时间的时间。
-
点赞操作
将用户的 ID 添加到 ZSet 中,score 为当前时间。
如果,用户已经点过赞,则更新其点赞时间。
-
取消点赞
将用户的 ID 从有序集合中删除
-
查询点赞信息
使用有序集合的
ZREVRANGEBYSCORE命令,按照 score(时间截)逆序返回 ZSet 的 value,即为点赞用户的 ID。