基于Redis的Set实现共同好友微关系
1、概述
使用redis的set集合实现共同好友
在开发中,我们可能需要计算出关羽和张飞共同关注的人有哪些?也就是关注关羽的人和关注张飞的人。我们如何通过计算把两个人的关注相同的人找出来。如果我们使用SQL如何进行编写呢?
比如:关羽关注了10个人,张飞关注了50个人,怎么计算两个人共同关注了那些人。
-
SQL
一般采用in或者not in来实现,但是对于高并发的情况下in和not in是不可取的,就算优化使用了索引,性能也会很差。
-
一般解决方案:
RedisRedis的set集合数据结构,非常适合的存储好友、关注、粉丝和感兴趣的人的集合。
1、sinter交集命令:获得A和B两个用户共同的好友
sinter A B --- 12、sismember命令:可以判断某个用户是B的好友。
3、scard命令:可以获取好友的数量。
02、具体实现
需求:
把关羽的关注列表和张飞的关注列表:
关羽的关注列表:followee:user:2
张飞的关注列表:followee:user:3
sinter followee:user:2 followee:user:3
package com.example.controller;
import com.example.entity.User;
import com.example.service.FollowerService

本文介绍了基于Redis的Set数据结构实现共同好友的功能。通过使用sinter交集命令找到关羽和张飞共同关注的人,避免高并发场景下SQL的in和not in操作导致的性能问题。还提及了sismember用于判断用户是否为好友,以及scard获取好友数量的方法。
最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



