← 返回生产场景
📰 内容与社交
CMS / 评论 / 点赞 / Feed流 / 审核 / 敏感词
📜Feed流:推(写扩散)vs 拉(读扩散)高频
推(写扩散)
发布时推到每个粉丝的收件箱。读快写慢。大V发一条 → 推千万份。
拉(读扩散)
发布只存主页。读时拉关注人的最新。写快读慢。关注多人 → 拉很多源合并。
实际方案:推拉结合。普通人用推(粉丝少),大V用拉(粉丝多),按粉丝数阈值切换。
👍点赞系统
// 用 Redis Set 存点赞用户(去重 + 快速判断是否点过)
// key = like:post:{postId}, value = userId 集合
public void like(Long postId, Long userId) {
boolean isNew = redisTemplate.opsForSet()
.add("like:post:" + postId, userId.toString());
if (isNew) {
// 新点赞 → 更新计数 + 通知作者
postMapper.incrementLikeCount(postId);
notifyService.notifyAuthor(postId, "有人点赞了你的文章");
}
// 已点赞过 → 幂等,不重复计数
}
public boolean hasLiked(Long postId, Long userId) {
return redisTemplate.opsForSet()
.isMember("like:post:" + postId, userId.toString());
}
🔍敏感词过滤
用户发评论/文章,不能出现违禁词。
// 方案1:DFA 算法(确定有穷自动机)
// 把敏感词库构建成树,文本逐字符匹配 → O(n) 扫描一次
// 推荐:用 hutool 的 SensitiveUtil 或自己构建 DFA 树
public String filter(String text) {
return SensitiveUtil.filter(text, '*');
// "这个商品真垃圾" → "这个商品真**"
}
// 方案2:AI审核(百度/阿里内容安全API)
// 图片/视频审核更复杂,需要调第三方AI审核API
审核流程:机审(DFA/AI)→ 不确定的人工复审 → 通过/拒绝/标记可疑。
生产场景 · 内容与社交 · 全栈资料库