如何通过Redis Set集合和SINTER操作精准推荐共同关注好友?
- 内容介绍
- 文章标签
- 相关推荐
本文共计995个文字,预计阅读时间需要4分钟。
能,但必须确保所有用户关注的列表都使用SET存储,且key命名有规则(例如:
常见错误现象:SINTER user:101:follows user:102:follows 返回空,但你知道他们确实都关注了 user:200。这时要检查:
• user:101:follows 和 user:102:follows 是否真为 SET 类型(用 TYPE 命令确认)
• 成员是否以字符串形式存入(比如存的是整数 200 还是字符串 "200",类型不一致会导致匹配失败)
• 是否误用了 LPUSH 或 HSET 写入,导致实际是 list 或 hash
怎么用 SINTER 推荐“可能认识的人”?
核心思路:对目标用户 A,找出他所有关注的人(比如 5 个),再对这 5 个人各自的 :follows 集合做并集(SUNION),最后剔除 A 自己已关注的、以及 A 自身 ID,剩下就是候选推荐池。但这里 SINTER 不是直接用于推荐,而是用于“找共同兴趣圈”——比如你和好友 B 都关注了 3 个相同账号,那 B 的其他关注就值得推给你。
本文共计995个文字,预计阅读时间需要4分钟。
能,但必须确保所有用户关注的列表都使用SET存储,且key命名有规则(例如:
常见错误现象:SINTER user:101:follows user:102:follows 返回空,但你知道他们确实都关注了 user:200。这时要检查:
• user:101:follows 和 user:102:follows 是否真为 SET 类型(用 TYPE 命令确认)
• 成员是否以字符串形式存入(比如存的是整数 200 还是字符串 "200",类型不一致会导致匹配失败)
• 是否误用了 LPUSH 或 HSET 写入,导致实际是 list 或 hash
怎么用 SINTER 推荐“可能认识的人”?
核心思路:对目标用户 A,找出他所有关注的人(比如 5 个),再对这 5 个人各自的 :follows 集合做并集(SUNION),最后剔除 A 自己已关注的、以及 A 自身 ID,剩下就是候选推荐池。但这里 SINTER 不是直接用于推荐,而是用于“找共同兴趣圈”——比如你和好友 B 都关注了 3 个相同账号,那 B 的其他关注就值得推给你。

