Redis实现关注关系
最近使用关系型数据库实现了用户之间的关注,于是思考换一种思路,使用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实现关注关系相关推荐
- 用Redis实现微博关注关系
2019独角兽企业重金招聘Python工程师标准>>> 用Redis实现微博关注关系的分析 关注关系产生的四种关系状态 需求分析 看自己的关注,粉丝列表: 看别人的关注,粉丝列表: ...
- Scrapy豆瓣爬虫 爬取用户以及用户关注关系
文章目录 明确任务 1.新建mysql数据库以及数据表 1.1 创建数据库 1.2 创建用户信息表users 1.3 创建用户关注表user_follows 笔记一: mysql中utf8与utf8m ...
- 微博关注关系网络、转发关系网络制作
微博关注关系网络: 可以获取100名左右微博用户之间的关注关系,运用UCINET进行社会网络分析,包括:中心度.凝聚子群分析等,并利用UCINET中的Netdraw绘制关系网络图,如下图所示: 马林岭 ...
- NLPIR微博关注关系语料库100万条
汉语分词灵玖软件:www.lingjoin.com 大数据论坛:www.bigdatabbs.com NLPIR微博关注关系语料库说明 1.NLPIR微博关注关系语料库由北京理工大学网络搜索挖掘与安全 ...
- 用MySQL实现微博关注关系的方案分析
由于产品需求的需要,我们做的产品里要实现类似微博里的关注关系.本文是以MySQL为基础,分析用MySQL如何实现微博的关注关系,对理解关注关系有一定的意义. 关注关系产生的四种关系状态 关注 粉丝 双 ...
- Redis——好友关注、共同关注、Feed流推送
1. 好友关注 在探店图文的详情页面中,可以关注发布笔记的作者: 进到探店笔记详情页,会发出两个请求,1是判断是否已经关注,2是尝试关注用户的请求. 关注是User之间的关系,是博主与粉丝的关系,数据 ...
- php redis编程,php + redis 实现关注功能
原文:https://www.cnblogs.com/laowenBlog/p/14192070.html 产品价值 应用场景 在做PC或者APP端时,掺杂点社交概念就有关注和粉丝功能; 数据量小的话 ...
- redis——实战关注
效果: 思路:很好想,把自己的粉丝和自己关注的人都存起来(set即可),做增删改查. package com.now.community.community.service;import com.no ...
- Redis——实现关注与取关等功能
目录 实现关注与取关 实现共同关注功能 关注推送 Feed流的模式 拉模式 推模式 推拉结合模式 总结 基于推模式实现关注推送功能 Feed流的分页问题 实现关注推送页面的分页查询 实现关注与取关 实 ...
最新文章
- Hive的JDBC连接和数据查询功能
- Mysql中字段类型之时间戳大坑
- 鼠标点击测试_鼠标键盘如何检测故障,这边教您简单的测试
- springboot访问jsp页面变成直接下载?
- 处理器映射器(HandlerMapping)及处理器适配器(HandlerAdapter)详解(一)
- 华为鸿蒙与佳华,华为鸿蒙系统发布,带来三大好消息
- 如何批量在文件夹中建立php,怎么批量创建文件夹_一次性创建多个文件夹方法_一聚教程网...
- 关于K8s技术架构的几个问题
- 自顶向下 计算机网络知识,计算机网络(自顶向下)第七版考试复习要点(第四章)...
- 我的开源项目:FLV封装格式分析器
- gRPC框架学习:6、Java+gRPC+maven+idea实例测试并打jar包
- 【生信分析】clusterProfiler: universal enrichment tool for functional and comparative study(2)
- ICTCLAS代码学习笔记之CSpan类
- 小白科研笔记:简析SOTA目标检测算法3D-CVF
- 2022苹果春季发布会带来新款iPhoneSE价格预计2500左右
- eaxsinbx_用“三行列表法”计算两次分部积分题
- python 将16位 png 深度图转化为伪彩色图
- java内省_java内省机制
- 微信小程序云开发学习笔记
- AD转换和DA转换的应用