redis 实现互相关注功能

Redis场景应用:详细实现网站粉丝关注与展示的功能 本篇博文详细介绍了如何利用 PHP、Redis 和 MySQL 来实现关注功能,并给出了具体的实现步骤和代码。通过 Redis 存储关注数据,可以提高查询效率和扩展性,而使用 MySQL 存储关注数据则更适合持久化存储和数据备份。实际过程中可能遇到的情况更加多样,不过核心的逻辑就是这些了。后面将会分享更多的实战经验,我们下次见。 阅读详情

突然想到平时的设计软件如何实现互相关注这个功能,然后查询后大致思路如下:

可以使用 Redis 数据库来存储关注关系。

在社交网络应用程序中,互相关注功能(也称为双向关注或好友关系)是一种常见的功能,允许用户之间相互关注彼此。在Redis中,可以使用集合(Set)数据结构来实现互相关注功能。

假设我们有两个用户,分别是用户A和用户B,他们之间可以相互关注。

1. **用户A关注用户B:**
SADD following:A B
```

这个命令将用户A的关注列表中添加了用户B。

2. **用户B关注用户A:**
SADD following:B A
```

这个命令将用户B的关注列表中添加了用户A。

3. **检查两个用户是否互相关注:**
SISMEMBER following:A B
SISMEMBER following:B A
```

以上两个命令分别检查用户A的关注列表中是否包含用户B,以及用户B的关注列表中是否包含用户A。如果返回1,表示互相关注,如果返回0,表示未互相关注。

4. **获取用户A的关注列表:**
SMEMBERS following:A
```

这个命令将返回用户A关注的所有用户的列表。

5. **获取用户B的关注列表:**
SMEMBERS following:B
```

这个命令将返回用户B关注的所有用户的列表。

需要注意的是,以上示例假设用户ID是唯一的。可以将用户ID作为集合的键,以及关注的用户ID作为集合的成员。。

然后用一个示例 Python 代码,演示了如何实现互相关注功能:

首先,确保已经安装和启动了 Redis 服务器。然后,使用一个 Redis 客户端库(如 redis-py)来与 Redis 交互。

import redis

# 连接到 Redis 服务器
r = redis.Redis(host='localhost', port=6379, db=0)

# 定义关注和被关注的用户的键名
def get_user_key(user_id):
    return f'user:{user_id}'

# 实现关注功能
def follow_user(user_id, target_user_id):
    user_key = get_user_key(user_id)
    target_user_key = get_user_key(target_user_id)

    # 将 target_user_id 添加到用户的关注列表中
    r.sadd(f'{user_key}:following', target_user_id)

    # 将用户的 user_id 添加到 target_user_id 的粉丝列表中
    r.sadd(f'{target_user_key}:followers', user_id)

# 实现取消关注功能
def unfollow_user(user_id, target_user_id):
    user_key = get_user_key(user_id)
    target_user_key = get_user_key(target_user_id)

    # 从用户的关注列表中移除 target_user_id
    r.srem(f'{user_key}:following', target_user_id)

    # 从 target_user_id 的粉丝列表中移除 user_id
    r.srem(f'{target_user_key}:followers', user_id)

# 获取用户的关注列表
def get_following(user_id):
    user_key = get_user_key(user_id)

    # 获取用户的关注列表
    return r.smembers(f'{user_key}:following')

# 获取用户的粉丝列表
def get_followers(user_id):
    user_key = get_user_key(user_id)

    # 获取用户的粉丝列表
    return r.smembers(f'{user_key}:followers')

# 示例用法
user1_id = 'user1'
user2_id = 'user2'
user3_id = 'user3'

follow_user(user1_id, user2_id)
follow_user(user1_id, user3_id)
follow_user(user2_id, user1_id)

print(f'User1 is following: {get_following(user1_id)}')
print(f'User1 has followers: {get_followers(user1_id)}')

使用 Redis 的集合(Set)来存储用户的关注列表和粉丝列表。sadd 用于将用户添加到关注列表,srem 用于从关注列表中移除用户。通过这些操作,我们可以实现用户之间的互相关注关系,并轻松地获取关注列表和粉丝列表。

FPGA以太网通信实战(一):实现MDIO接口驱动,掌控PHY芯片的钥匙 本文介绍了以太网通信技术及其核心组件。首先概述了以太网的发展历程,从标准以太网(10Mbps)到万兆以太网(10Gbps)的技术演进。重点分析了以太网接口的两大核心部件:MAC控制器负责数据链路层协议处理,PHY芯片负责物理信号转换和连接管理。文章详细解读了MDIO接口规范,包括帧格式和读写时序,并以YT8531 PHY芯片为例,介绍了其寄存器配置方法。最后设计了一个FPGA实现方案,通过MDIO接口完成PHY芯片的软复位和状态监测功能,并利用LED指示灯实时显示网络连接速率。 阅读详情

相关推荐

Unity游戏开发客户端面经——设计模式(初级)

Unity游戏开发客户端面经 之 设计模式 篇

Sea3752的博客 9430

【Redis】hmdp关注取关、共同关注、关注推送功能实现

我们在实现关注取关功能时,使用了redis的set结构存储数据,以用户id构建key,以被关注用户们的id集合为value。在这里我们有两个用户,所以有两个以被关注用户们的id集合,这两个集合可能会相交也可能不会相交,我们要做的就是取出这两个集合之中相同的部分。为用户持续的提供“沉浸式”的体验,通过无限下拉刷新获取新的信息。因为Feed流中的数据可能会更新,所以数据的角标也有可能发送变化,因此不能采用传统的分页模式。在个人主页当中,点击“关注”,前端发送一个请求去获取关注用户发布的笔记列表。

Decade_Faiz的博客 645

Jetson AGX Orin 新手避坑:解决‘找不到nvidia-jetpack包’的完整修复指南

本文详细介绍了Jetson AGX Orin设备在安装JetPack开发套件时遇到的'nvidia-jetpack包缺失'问题的完整解决方案。通过分析问题根源、提供分步修复指南以及系统优化建议,帮助开发者快速解决这一常见问题,充分发挥Jetson AGX Orin的边缘计算性能。

weixin_42520909的博客 460

Redis基于Set如何实现用户关注模型?

为每个用户定义一个set,存储该用户关注的用户集合,集合存储用户的唯一标识id,有了用户的关注人信息后可以做以下几个操作: 相互关注:用集合里自己关注的人的id,去查找该用户的关注人集合,看自己是否在集合中,如果在里面,说明自己关注的人也关注了自己。 我关注的人也关注了他: 用自己关注的人的集合,跟自己关注的人关注的集合做交集,那么就能计算出自己关注的人跟自己都共同关注了谁。 查找可能认识的人:可能认识的人首先要有一个规则,怎么才算可能认识的人,暂定,自己关注的人里面,有两个...

残雪的剑的博客 957

图形学基础|基于SDF的卡通阴影图

图形学基础|基于SDF的卡通阴影图 文章目录图形学基础|基于SDF的卡通阴影图一、前言二、SDF(Signed Distance Field)三、阴影图生成3.1 SDF生成3.2 插值参考博文 一、前言 回顾之前做的卡通渲染,角色面部阴影是靠一张阴影贴图实现的。 为了更好地控制角色的脸部阴影,通过计算脸部朝向与光照方向的夹角和一张单色的FaceMap来判断。 FaceMap的每个像素表示:该像素判断为阴影时候需要达到的夹角。 例如: 当方向光正对角色的时候,夹角为0°,对应的值为0,此时,FaceMap

【黑键】 1万+

手把手教你用RoboTwin训练RDT模型:从环境配置到实战微调(避坑指南)

本文提供了一份详尽的避坑指南,手把手教你如何在RoboTwin开源仿真环境中,从零开始配置环境、采集数据并完成RDT视觉语言动作模型的实战微调。文章涵盖了环境搭建、数据流水线构建、模型配置与训练等关键步骤,旨在帮助研究者和开发者高效利用仿真数据,低成本探索具身智能应用。

weixin_29094979的博客 132

如何用Redis实现用户关注

通过使用Redis的set数据结构来存储关注对象,方便高效地进行添加和取消关注操作。同时,在前端中使用Vue框架实现了可交互的关注和取消关注按钮,并在用户主页上显示了关注和被关注的数量。

不愧是暮言的博客 1568

MUSIC算法翻车?Toeplitz矩阵重构如何解决DOA估计中的相干信源难题

本文深入探讨了MUSIC算法在相干信源DOA估计中失效的根本原因,并详细介绍了基于Toeplitz矩阵重构的协方差矩阵修复技术。该方法通过凸优化恢复协方差矩阵的理想结构,有效解决了信号子空间秩亏损问题,从而显著提升了MUSIC算法在相干和多径场景下的分辨精度与稳健性。

a2b3c4d5e的博客 249

【Redis学习10】好友关注---关注与取关,共同关注及关注推送

文章目录1. 关注与取关1.1 需求分析1.2 代码实现1.3 功能完善2. 共同关注2.1 需求分析2.2 代码实现3. 关注推送3.1 关注推送介绍3.2 Feed流的实现方式3.3 代码实现 1. 关注与取关 1.1 需求分析 1.2 代码实现 首先我们实现关注和取关功能,再实现是否关注功能。 如何实现关注和取关功能呢?我们在页面点击关注按钮,页面会发送ajax请求将要关注或者取关的信息传递到服务端,关注传递的是true,取关传递的是false。同时,页面还将博主的id传递过来。接下来,我们只需要

一个正在努力学习的iter 1763

基于SAGE算法的宽带信道参数估计算法的MATLAB仿真

本文将介绍如何使用MATLAB进行SAGE算法的仿真,以便更好地理解和应用该算法。SAGE算法是一种基于最大期望(Expectation-Maximization)方法的迭代估计算法,用于估计未知的参数。在宽带信道参数估计中,SAGE算法通过迭代优化来估计信道的传输函数。总结起来,本文介绍了如何使用MATLAB进行基于SAGE算法的宽带信道参数提取算法的仿真。通过以上步骤,我们可以得到估计的信道响应,并与真实信道响应进行比较。此外,SAGE算法还可以与其他信道估计算法相结合,以提高估计的准确性和性能。

CodeRoarX的博客 1075

多尺度仿真软件:Copasi_(1).Copasi概述

Copasi(Complex Pathway Simulator)是一款开源的多尺度仿真软件,专为生物化学、系统生物学和合成生物学领域的研究人员设计。它不仅能够模拟细胞内和细胞间的生化反应网络,还能处理代谢途径、信号传导途径和基因调控网络等多种复杂系统。Copasi提供了用户友好的图形界面和强大的命令行接口,支持多种仿真算法和分析工具,使用户能够高效地进行模型构建、仿真和分析。Copasi允许用户创建自定义报告,以便生成特定格式的仿真结果。用户可以通过图形界面或命令行创建自定义报告。

kkchenjj的博客 857

Redis实现互相关注功能

Redis实现互相关注功能

爱敲键盘的程序源的博客 1054

讲透 ABAP CDS 注解名称:简单名、结构化名、@ 与 @<、作用域与分组

本文从开发者角度梳理ABAP CDS注解的命名规则与实战写法,重点解析: 语法规则:@与@<的使用场景、结构化命名规范、作用域唯一性要求 评估机制:ABAP运行时与组件框架的注解处理差异 分组技巧:花括号分组简化重复前缀的书写 实战示例:包含完整CDS View Entity(演示注解分组与@<用法)和ABAP报表(读取打印注解) 常见问题:命名错误导致激活失败、框架忽略等注意事项 最后通过航空预订统计案例,展示如何结合多种注解类型实现业务需求。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 262

互相关注 php如何实现,使用redis实现关注粉丝功能(php版)

redis不用说啥了,比mysql有的是可以吹的地方,于是很多人选择用redis来实现这类操作频繁的场景@(汗) 但是下午第一次安装redis花了好多时间...这里借用[button href="https://www.jianshu.com/p/e3f0b98a78bc"]Redis实现用户关注功能[/button]的思路于是有...

weixin_35455135的博客 685

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

互相关注 php如何实现,redis+php实现微博(二)发布与关注功能详解

本文实例讲述了redis+php实现微博发布与关注功能。分享给大家供大家参考,具体如下:数据结构:set post:postid:3:time timestampset post:postid:3:userid 5set post:postid:3:content 测试发布哈哈哈哈incr global:postidset post:postid:$postidcho "用户名密码不能够为空!";...

weixin_33363265的博客 360

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

php实现小说字典功能_[精选] PHP与Redis实现用户互粉与取关功能

文章来自:https://segmentfault.com/a/1190000008145959作者:Blackjun点击加入:PHP自学中心技术交流微信群商务合作:请加微信(QQ):2230304070精选文章正文视频教程推荐:【ThinkPHP5 第五季实战开发资源下载站项目】目录链接:http://www.mano100.cn/thread-1802-1-1.html最近在写ap...

weixin_39882948的博客 313

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

使用redis实现互粉功能

使用redis实现互粉 最近在写api的时候要实现一个相互关注的功能,发现如果用mysql做查询不是很理想, 所以想能不能用redis来实现这个功能,网上一搜有很多实现的方法,结合网上的博文,实现了自己的功能。 1.数据库实现 一下是数据库的代码,通过保存用户的id和关注对象的id以及关注状态来判断用户的关注列表和粉丝列表,通过联查获取...

weixin_34301307的博客 525

Redis实现微博后台业务逻辑系列(四)

保存微博用户之间的关系: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 impo...

weixin_33850890的博客 115

一些关于第一次从零开发项目的感悟总结(后端部分)

从0开始项目总结

li_jiang1的博客 389

Redis--黑马点评--好友关注功能实现

举例说明:为每个博主准备一个发件箱,发送消息到邮箱,消息需要带上时间戳,timeline的核心是按时间排序,因此需要带上时间戳,其他人在发消息时,时间戳就会递增,而为粉丝准备一个收件箱,收件箱平时是空的,只有粉丝要去读消息的时候,才会给他拉取,首先先查看粉丝关注的博主,就将其关注的所有人的发件箱的消息拉到他的收件箱里,再做时间上的排序。想要做到共同关注,就需要在关注接口上,将当前用户关注的用户id保存到Redis的set数据结构中,目标用户关注的用户id也需要将其保存到redis中。

m0_73856804的博客 1073

Redis实现好友关注关系的思路

在项目中,我们有时可能会需要设计好友关注这个功能。如果用关系性数据库,例如MySQL可能会查询很慢,我们可以用Redis来实现这个功能。 如上图所示,在好友关注关系中,主要有以上三种状态,即: 我的粉丝(fans)我的关注(follow)互粉(mutual) 假设两个用户。用户ID分别为1和2,。 关注 1、关注好友: 关注好友分为两个步骤。 第一步,将对方写入我的关注中

hanierming的博客 9748

Redis实现好友关注、共同关注、Feed流推送

本文围绕社交平台的关注与博客相关功能展开。实现了关注与取关、查看是否关注、查看共同关注等基础功能,借助 Redis 的 Set 数据结构存储关注信息,提高操作效率。在关注推送方面,采用 Timeline 模式,具体选用推拉结合,在保存博客时将其推送给粉丝收件箱,使用 Redis 的 ZSet 按时间戳排序。还实现了收件箱的分页查询,避免传统分页消息重读问题,通过解析 Redis 查询结果获取博客 ID,再从数据库查询博客详情,补充相关信息后封装返回,保障用户获取关注博主博客的流畅体验。

hello77的blogggg 祝你得偿所愿 1041

如何用Redis实现微博关注关系?

戳蓝字“优快云云计算”关注我们哦!作者 |jockchou责编 | 阿秃关注关系产生的四种关系状态关注粉丝双向关注(互粉)无关系需求分析在微博中,每一个用户都会有一个关注列表,一个粉...

优快云业界要闻 921

使用Redis实现关注关系

最近使用关系型数据库实现了用户之间的关注,于是思考换一种思路,使用Redis实现用户之间的关注关系。 综合考虑了一下Redis的几种数据结构后,觉得可以用集合实现一下。 假设“我”的ID是1,“别人”的ID是2。 一、添加关注 添加关注分为两步:1、将对方id添加到自己的关注列表中;2、将自己的id添加到对方的粉丝列表中: SADD 1:follow 2 SADD 2:fans 1 二、取消关注 取消关注同样分为两步:1、将对方id从自己的关注列表中移除;2、将自己的id从对方的粉丝列表中移

骏马逸动,心随你动的博客 1226

Redis实战之微博关注功能

1、需求分析: 每个用户都有两个表:用户的关注、用户的粉丝 关注关系有四种:关注、粉丝、互粉、无关系关注功能可划分为: 1)查看自己的关注/粉丝列表: 关注列表与自己只存在两种关系:关注、互粉 粉丝列表与自己只存在两种关系:粉丝、互粉2)查看别人的关注/粉丝列表: 关注列表与自己存在四种关系:关注、粉丝、互粉、无关系2、实现:结构类型采用:zset,score:存储关注时间key命名规则

傲然君 2719

redis实现共同好友或者共同关注。

redis实现共同好友或者共同关注

weixin_51472505的博客 1816
上一篇: Qt出现假死冻结现象
五百五。
博客等级 码龄7年 249粉丝 177原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五百五。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值