文章目录

  • 背景
  • 共同好友实现思路
    • 交集
    • 并集
    • 差集
  • 更多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实现共同好友功能相关推荐

  1. Redis实现微博好友功能微服务(关注,取关,共同关注)

    点击关注公众号,利用碎片时间学习 需求分析 好友功能是目前社交场景的必备功能之一,一般好友相关的功能包含有:关注/取关.我(他)的关注.我(他)的粉丝.共同关注.我关注的人也关注他等这样一些功能. 类 ...

  2. redis实现共同好友功能

    SINTER 语法:SINTER key [key -] 返回一个集合的全部成员,该集合是所有给定集合的交集 不存在的 key 被视为空集. 当给定集合当中有一个空集时,结果也为空集(根据集合运算定律 ...

  3. Redis实战 - 05 Redis 实现好友功能(关注,取关,共同关注)

    文章目录 1. 环境搭建 1. 需求分析 2. 设计思路 3. 数据库表结构 4. 创建子模块 ms-follow 服务 5. 配置类 RedisTemplateConfiguration 6. 配置 ...

  4. 【springboot】【redis】springboot+redis实现发布订阅功能,实现redis的消息队列的功能...

    springboot+redis实现发布订阅功能,实现redis的消息队列的功能 参考:https://www.cnblogs.com/cx987514451/p/9529611.html 思考一个问 ...

  5. Java实现Redis的订阅发布功能,亲测可以

    文章目录 简介 Redis发布订阅 Java发布订阅 简介 首先我们得知道,当一个用户订阅了某个频道,那么他就会一直在那监听该频道是否发出消息,是一种阻塞的状态,所以,我们把订阅功能用多线程来实现,给 ...

  6. python+pyautogui+pyperclip实现QQ自动加好友功能

    python+pyautogui+pyperclip实现QQ自动加好友功能 在想自动加好友的时候有几个思路 1.抓包,调接口,结果发现解密挺费事的,pass 2.通过qq空间加好友功能,使用selen ...

  7. 如何在App中实现朋友圈功能之三快速实现双向好友功能——箭扣科技Arrownock

    如何在App中实现朋友圈功能 之三 快速实现双向好友功能 在社交APP的使用中,用户相互添加好友是一个必要的场景,本期技术分享在这里给大家介绍如何利用AnSocial的Friend来实现微博粉丝和微信 ...

  8. VUE使用JS-SDK实现微信分享好友功能(通过点击控件触发)

    微信JSSDK官方开发文档 微信分享有很多种 这里只记录了分享好友功能 1.通过npm安装微信的js-sdk npm install weixin-js-sdk 2.在main.js里引用或在需要分享 ...

  9. 摇一摇加好友功能实现

    摇一摇加好友功能 游戏中的好友系统通常会就有面对面添加好友的功能, 功能具体内容就是输入相同数字串进行搜索,就能搜索到一定时间内输入相同数字串的玩家.从理解上看功能描述较为简单,但具体的实现过程还是有 ...

最新文章

  1. 【重磅】Python版《统计学习导论》来啦!附代码链接!
  2. cmd不是内部命令解决方法
  3. 爬虫基本库的使用---urllib库
  4. vue :class 动态绑定样式_Notes04vbind动态绑定class
  5. DOM 节点类型及属性
  6. Google服务你都用了哪些?
  7. c#服务器上的文件怎么打印机,如何通过使用C#窗口服务通过打印机打印数据打印文本文件...
  8. python语言适用于哪些领域_Python用于哪些领域
  9. 程序相关概念及OS Linux发行版
  10. ASP.NET随机显示数据库记录
  11. 容器技术Docker K8s 27 容器服务ACK基础与进阶-监控管理
  12. Caffe框架-入门浅谈及碰到的坑
  13. 手把手教你使用SPSS做出亚组分析的交互作用效应(p for Interaction)
  14. MSOCache文件,带你一文看懂。
  15. warp-transducer,warprnnt_tensorflow
  16. 《大话设计模式 下》
  17. Android端恶意锁屏勒索应用分析
  18. Dubbo异常 Can not lock the registry cache file解决方案
  19. 【机器人定位引导中的机器视觉技术】
  20. 趋势科技Pc-cillin 2011网友使用体验

热门文章

  1. win10 32g大内存只能使用50%的解决办法
  2. JavaScript打印页面的出错异常与IE调用其他网页
  3. 阿里云怎样操作mysql数据库_阿里云主机如何操作mysql数据库
  4. 【读书札记】SQL笛卡尔积的运用
  5. 毕业设计 - 基于SSH码头船只出行及配套货柜码放 管理系统【源码 + 论文】
  6. Abaqus纤维混凝土3D 泡沫混凝土 三维随机几何 三维混凝土细观 多面体骨料建模
  7. 现在最暴利的行业是什么?
  8. 市场的力量:中国经济改革之思 所有习题答案(一)
  9. 西门子PLC 的特殊功能寄存器
  10. 期货市场的免费午餐?期限结构Carry收益模型分享