【开发经验】redis实现共同好友功能
文章目录
- 背景
- 共同好友实现思路
- 交集
- 并集
- 差集
- 更多set命令说明:
背景
微信朋友圈的点赞、评论,只能看到自己好友的信息。这就涉及到了一个共同好友的概念,通过redis的set
集合可以很轻松的实现此功能。
共同好友实现思路
每个人的好友存放在set集合中。key的名字为friend_{userId}
。如下图:
- 用户1的好友为2,3,4
- 用户2的好友为1,3,4
- 用户3的好友为1,4,5
交集
用户1和2是好友。他们的共同好友可以通过他们的交集获取。
redis命令示例:
127.0.0.1:6379> sadd friend_1 2 3 4
(integer) 3
127.0.0.1:6379> sadd friend_2 1 4 5
(integer) 3
127.0.0.1:6379> SINTER friend_1 friend_2
1) “4”
sadd
将一个或多个成员元素加入到集合中,已经存在于集合的成员元素将被忽略。命令详解SINTER
返回给定所有给定集合的交集。命令详解
并集
获得所有的好友信息。
127.0.0.1:6379> SUNION friend_1 friend_2
1) “1”
2) “2”
3) “3”
4) “4”
5) “5”
SUNION
返回给定集合的并集。命令详解
差集
可以用户好友推荐。差集出来的用户推荐给用户2。
127.0.0.1:6379> sadd friend_1 2 3 4
(integer) 3
127.0.0.1:6379> sadd friend_2 1 4 5
(integer) 3
127.0.0.1:6379> SDIFF friend_1 friend_2
1) “2”
2) “3”
SDIFF
返回第一个集合与其他集合之间的差异。命令详解
更多set命令说明:
序号 | 命令及描述 |
---|---|
1 | SADD key member1 [member2] 向集合添加一个或多个成员 |
2 | SCARD key 获取集合的成员数 |
3 | SDIFF key1 [key2] 返回给定所有集合的差集 |
4 | SDIFFSTORE destination key1 [key2] 返回给定所有集合的差集并存储在 destination 中 |
5 | SINTER key1 [key2] 返回给定所有集合的交集 |
6 | SINTERSTORE destination key1 [key2] 返回给定所有集合的交集并存储在 destination 中 |
7 | SISMEMBER key member 判断 member 元素是否是集合 key 的成员 |
8 | SMEMBERS key 返回集合中的所有成员 |
9 | SMOVE source destination member 将 member 元素从 source 集合移动到 destination 集合 |
10 | SPOP key 移除并返回集合中的一个随机元素 |
11 | SRANDMEMBER key [count] 返回集合中一个或多个随机数 |
12 | SREM key member1 [member2] 移除集合中一个或多个成员 |
13 | SUNION key1 [key2] 返回所有给定集合的并集 |
14 | SUNIONSTORE destination key1 [key2] 所有给定集合的并集存储在 destination 集合中 |
【开发经验】redis实现共同好友功能相关推荐
- Redis实现微博好友功能微服务(关注,取关,共同关注)
点击关注公众号,利用碎片时间学习 需求分析 好友功能是目前社交场景的必备功能之一,一般好友相关的功能包含有:关注/取关.我(他)的关注.我(他)的粉丝.共同关注.我关注的人也关注他等这样一些功能. 类 ...
- redis实现共同好友功能
SINTER 语法:SINTER key [key -] 返回一个集合的全部成员,该集合是所有给定集合的交集 不存在的 key 被视为空集. 当给定集合当中有一个空集时,结果也为空集(根据集合运算定律 ...
- Redis实战 - 05 Redis 实现好友功能(关注,取关,共同关注)
文章目录 1. 环境搭建 1. 需求分析 2. 设计思路 3. 数据库表结构 4. 创建子模块 ms-follow 服务 5. 配置类 RedisTemplateConfiguration 6. 配置 ...
- 【springboot】【redis】springboot+redis实现发布订阅功能,实现redis的消息队列的功能...
springboot+redis实现发布订阅功能,实现redis的消息队列的功能 参考:https://www.cnblogs.com/cx987514451/p/9529611.html 思考一个问 ...
- Java实现Redis的订阅发布功能,亲测可以
文章目录 简介 Redis发布订阅 Java发布订阅 简介 首先我们得知道,当一个用户订阅了某个频道,那么他就会一直在那监听该频道是否发出消息,是一种阻塞的状态,所以,我们把订阅功能用多线程来实现,给 ...
- python+pyautogui+pyperclip实现QQ自动加好友功能
python+pyautogui+pyperclip实现QQ自动加好友功能 在想自动加好友的时候有几个思路 1.抓包,调接口,结果发现解密挺费事的,pass 2.通过qq空间加好友功能,使用selen ...
- 如何在App中实现朋友圈功能之三快速实现双向好友功能——箭扣科技Arrownock
如何在App中实现朋友圈功能 之三 快速实现双向好友功能 在社交APP的使用中,用户相互添加好友是一个必要的场景,本期技术分享在这里给大家介绍如何利用AnSocial的Friend来实现微博粉丝和微信 ...
- VUE使用JS-SDK实现微信分享好友功能(通过点击控件触发)
微信JSSDK官方开发文档 微信分享有很多种 这里只记录了分享好友功能 1.通过npm安装微信的js-sdk npm install weixin-js-sdk 2.在main.js里引用或在需要分享 ...
- 摇一摇加好友功能实现
摇一摇加好友功能 游戏中的好友系统通常会就有面对面添加好友的功能, 功能具体内容就是输入相同数字串进行搜索,就能搜索到一定时间内输入相同数字串的玩家.从理解上看功能描述较为简单,但具体的实现过程还是有 ...
最新文章
- 【重磅】Python版《统计学习导论》来啦!附代码链接!
- cmd不是内部命令解决方法
- 爬虫基本库的使用---urllib库
- vue :class 动态绑定样式_Notes04vbind动态绑定class
- DOM 节点类型及属性
- Google服务你都用了哪些?
- c#服务器上的文件怎么打印机,如何通过使用C#窗口服务通过打印机打印数据打印文本文件...
- python语言适用于哪些领域_Python用于哪些领域
- 程序相关概念及OS Linux发行版
- ASP.NET随机显示数据库记录
- 容器技术Docker K8s 27 容器服务ACK基础与进阶-监控管理
- Caffe框架-入门浅谈及碰到的坑
- 手把手教你使用SPSS做出亚组分析的交互作用效应(p for Interaction)
- MSOCache文件,带你一文看懂。
- warp-transducer,warprnnt_tensorflow
- 《大话设计模式 下》
- Android端恶意锁屏勒索应用分析
- Dubbo异常 Can not lock the registry cache file解决方案
- 【机器人定位引导中的机器视觉技术】
- 趋势科技Pc-cillin 2011网友使用体验