这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
去重展示
展示问题
实现”点赞过这篇文章的用户”功能后,遇到了新问题。
场景:爆款文章
文章《创业者的一天》:
- 点赞数:10,000+
- 点赞用户:10,000 人
问题:
1. 一次性展示 10,000 个用户头像
- 页面加载慢
- 内存占用大
- 用户体验差
2. 重复的用户
- 用户可能多次点赞/取消点赞
- 需要去重
3. 如何展示?
- 展示所有 10,000 个用户?
- 只展示前 100 个?
- 分页展示?
需要设计合理的展示策略。
展示策略
策略 1:限制数量
优点:
- 实现简单
- 性能好
- 用户体验可控
缺点:
- 看不到所有用户
- 可能不公平
策略 2:分页展示
优点:
- 可以查看所有用户
- 公平展示
- 页面加载快
缺点:
- 实现稍复杂
- 需要分页控件
策略 3:分层展示
优点:
- 优先展示重要用户
- 用户体验好
- 社交属性强
缺点:
- 实现复杂
- 需要社交关系数据
去重策略
问题:重复点赞
场景:用户多次点赞/取消点赞
时间线:
T0: 用户点赞文章 A
T1: 用户取消点赞文章 A
T2: 用户再次点赞文章 A
问题:
- 点赞记录列表可能重复
- 需要去重
方案 1:使用 Sorted Set 自动去重
方案 2:去重显示
方案 3:前端去重
推荐:使用 Sorted Set 自动去重
性能优化
优化 1:懒加载
优化 2:虚拟滚动
优化 3:头像 CDN 加速
实际效果
性能对比
场景:10,000 个点赞用户
方案 1:一次性加载
- 数据量:10,000 个用户
- 页面大小:约 5 MB
- 加载时间:约 3 秒
- 用户体验:差
方案 2:限制数量(100 个)
- 数据量:100 个用户
- 页面大小:约 50 KB
- 加载时间:约 0.2 秒
- 用户体验:好
方案 3:分页(每页 50 个)
- 数据量:50 个用户/页
- 页面大小:约 25 KB
- 加载时间:约 0.1 秒
- 用户体验:很好
存储优化
优化前:
- 每篇文章存储所有点赞用户
- 10,000 个用户 × 100 字节 = 1 MB/文章
- 10,000 篇热门文章 = 10 GB
优化后:
- 每篇文章只存储最近 100 个用户
- 100 个用户 × 100 字节 = 10 KB/文章
- 10,000 篇文章 = 100 MB
节省:99%
课后练习
练习 1
如何实现”随机展示”点赞用户?
参考答案(3 个标签)
随机算法展示策略Redis
方案:使用 Sorted Set + 随机
练习 2
如何实现”按权重展示”点赞用户?
参考答案(3 个标签)
权重算法排序Redis
方案:综合评分排序
练习 3
如何实现”折叠”重复用户?
参考答案(3 个标签)
UI设计折叠用户体验
方案:折叠相同用户的多次点赞
练习 4
如何实现”搜索”点赞用户?
参考答案(3 个标签)
搜索过滤Redis
方案:客户端过滤
优化:使用 Redis Search
练习 5
如何实现”关注”功能(一键关注所有点赞用户)?
参考答案(3 个标签)
社交功能批量操作关注
方案:批量关注
思考题
-
如何实现”点赞用户的活跃度排序”(经常互动的用户优先展示)?
-
如何处理”僵尸用户”(长期不活跃的用户)?
-
如何实现”批量取消关注”功能?
💡 提示:这些问题没有标准答案,建议结合实际情况深入思考。
