最近使用关系型数据库实现了用户之间的关注,于是思考换一种思路,使用Redis实现用户之间的关注关系下载地址  。
综合考虑了一下Redis的几种数据结构后,觉得可以用集合实现一下。

假设“我”的ID是1,“别人”的ID是2。

一、添加关注

添加关注分为两步:1、将对方id添加到自己的关注列表中;2、将自己的id添加到对方的粉丝列表中:

SADD 1:follow 2SADD 2:fans 1

二、取消关注

取消关注同样分为两步:1、将对方id从自己的关注列表中移除;2、将自己的id从对方的粉丝列表中移除:

SREM 1:follow 2SREM 2:fans 1

三、关注列表

查看我的关注列表:

SMEMBERS 1:follow

查看别人的把id换掉就可以

四、粉丝列表

查看我的粉丝列表:

SMEMBERS 2:fans

查看别人的把id换掉就可以

五、人物关系

5.1 我单向关注他

我单向关注他,要同时满足两个条件:1、我的关注列表中他(或他的粉丝列表中我);2、我的粉丝列表中没有他(或他的关注列表中没有我)。

SISMEMBER 1:follow 2  #trueSISMEMBER 1:fans 2    #false

5.2 他单向关注我

他单向关注我,要同时满足两个条件:1、我的关注列表中没有他(或他的粉丝列表中没有我);2、我的粉丝列表中他(或他的关注列表中我)。

SISMEMBER 1:follow 2  #falseSISMEMBER 1:fans 2    #true

5.3 我和某人是否互粉

我和某人是否互粉,要同时满足两个条件:1、我的关注列表中有他(或他的粉丝列表中有我);2、我的粉丝列表中有他(或他的关注列表中有我)。同时成立才为互粉。

SISMEMBER 1:follow 2  #trueSISMEMBER 1:fans 2    #true

互粉的关系是互相的,也可以反过来查。

六、我的互粉

查询和我互粉的人,实际是对我的关注和我的粉丝求交集

SINTER 1:follow 1:fans

七、共同关注

查询1和2的共同关注,实际是1的关注和2的关注求交集

SINTER 1:follow 2:follow

八、数量相关

8.1 我的关注数

SCARD 1:follow

8.2 我的粉丝数

SCARD 1:fans

九、问题

目前存在的问题是,我的关注列表 & 我的粉丝列表,无法做到按关注时间排序,终端下显示是结果按ID正序排列的。
考虑的解决方案是添加关注时同时存一份有序集合,关注时的时间戳是score。

ZADD 1:follow 1457871625 2ZADD 2:fans 1457871625 1

那么我的关注列表是:

ZREVRANGE 1:follow 0 -1

同时,ZREVRANGE查询时的索引可以作为分页游标,基本解决目前的问题。

转载于:https://blog.51cto.com/11561130/1770685

Redis实现关注关系相关推荐

  1. 用Redis实现微博关注关系

    2019独角兽企业重金招聘Python工程师标准>>> 用Redis实现微博关注关系的分析 关注关系产生的四种关系状态 需求分析 看自己的关注,粉丝列表: 看别人的关注,粉丝列表: ...

  2. Scrapy豆瓣爬虫 爬取用户以及用户关注关系

    文章目录 明确任务 1.新建mysql数据库以及数据表 1.1 创建数据库 1.2 创建用户信息表users 1.3 创建用户关注表user_follows 笔记一: mysql中utf8与utf8m ...

  3. 微博关注关系网络、转发关系网络制作

    微博关注关系网络: 可以获取100名左右微博用户之间的关注关系,运用UCINET进行社会网络分析,包括:中心度.凝聚子群分析等,并利用UCINET中的Netdraw绘制关系网络图,如下图所示: 马林岭 ...

  4. NLPIR微博关注关系语料库100万条

    汉语分词灵玖软件:www.lingjoin.com 大数据论坛:www.bigdatabbs.com NLPIR微博关注关系语料库说明 1.NLPIR微博关注关系语料库由北京理工大学网络搜索挖掘与安全 ...

  5. 用MySQL实现微博关注关系的方案分析

    由于产品需求的需要,我们做的产品里要实现类似微博里的关注关系.本文是以MySQL为基础,分析用MySQL如何实现微博的关注关系,对理解关注关系有一定的意义. 关注关系产生的四种关系状态 关注 粉丝 双 ...

  6. Redis——好友关注、共同关注、Feed流推送

    1. 好友关注 在探店图文的详情页面中,可以关注发布笔记的作者: 进到探店笔记详情页,会发出两个请求,1是判断是否已经关注,2是尝试关注用户的请求. 关注是User之间的关系,是博主与粉丝的关系,数据 ...

  7. php redis编程,php + redis 实现关注功能

    原文:https://www.cnblogs.com/laowenBlog/p/14192070.html 产品价值 应用场景 在做PC或者APP端时,掺杂点社交概念就有关注和粉丝功能; 数据量小的话 ...

  8. redis——实战关注

    效果: 思路:很好想,把自己的粉丝和自己关注的人都存起来(set即可),做增删改查. package com.now.community.community.service;import com.no ...

  9. Redis——实现关注与取关等功能

    目录 实现关注与取关 实现共同关注功能 关注推送 Feed流的模式 拉模式 推模式 推拉结合模式 总结 基于推模式实现关注推送功能 Feed流的分页问题 实现关注推送页面的分页查询 实现关注与取关 实 ...

最新文章

  1. Hive的JDBC连接和数据查询功能
  2. Mysql中字段类型之时间戳大坑
  3. 鼠标点击测试_鼠标键盘如何检测故障,这边教您简单的测试
  4. springboot访问jsp页面变成直接下载?
  5. 处理器映射器(HandlerMapping)及处理器适配器(HandlerAdapter)详解(一)
  6. 华为鸿蒙与佳华,华为鸿蒙系统发布,带来三大好消息
  7. 如何批量在文件夹中建立php,怎么批量创建文件夹_一次性创建多个文件夹方法_一聚教程网...
  8. 关于K8s技术架构的几个问题
  9. 自顶向下 计算机网络知识,计算机网络(自顶向下)第七版考试复习要点(第四章)...
  10. 我的开源项目:FLV封装格式分析器
  11. gRPC框架学习:6、Java+gRPC+maven+idea实例测试并打jar包
  12. 【生信分析】clusterProfiler: universal enrichment tool for functional and comparative study(2)
  13. ICTCLAS代码学习笔记之CSpan类
  14. 小白科研笔记:简析SOTA目标检测算法3D-CVF
  15. 2022苹果春季发布会带来新款iPhoneSE价格预计2500左右
  16. eaxsinbx_用“三行列表法”计算两次分部积分题
  17. python 将16位 png 深度图转化为伪彩色图
  18. java内省_java内省机制
  19. 微信小程序云开发学习笔记
  20. AD转换和DA转换的应用

热门文章

  1. centos 编译nginx php mariadb,centos7安装nginx+mariadb+php-fpm
  2. 5G NR上行控制信道PUCCH
  3. oracle 数组类型
  4. Codeforces 1209D Cow and Snacks
  5. WebForm编辑器的相关资源
  6. uniGUI试用笔记(一)
  7. SqlServer 算法 :Nested Loops Join(嵌套连接)
  8. 散列函数的应用及其安全性
  9. 系统设计4:Web服务和流量限制
  10. Linux - chmod