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

redis不用说啥了,比mysql有的是可以吹的地方,于是很多人选择用redis来实现这类操作频繁的场景

@(汗) 但是下午第一次安装redis花了好多时间...

这里借用[button href="https://www.jianshu.com/p/e3f0b98a78bc"]Redis实现用户关注功能[/button]的思路

于是有<?php

namespace frag\lib;

class follow

{

public static $redis;

public function __construct()

{

// 连接redis

self::$redis = new \Redis();

self::$redis->connect(conf::get('IP', 'route'), 6379);

}

/**

* 添加关注

* @param int $follower uid

* @param int $fan uid

*/

public static function add($follower, $fan)

{

$name = $follower . ':follow';

$other = $fan . ':fans';

// 将对方id添加到自己的关注列表中

self::$redis->zAdd($name, time(), $fan);

//将自己的id添加到对方的粉丝列表中

self::$redis->zAdd($other, time(), $follower);

}

/**

* 取消关注

* @param int $follower uid

* @param int $fan uid

*/

public static function del($follower, $fan)

{

$name = $follower . ':follow';

$other = $fan . ':fans';

// 将对方id从自己的关注列表中移除;

self::$redis->zRem($name, $fan);

// 将自己的id从对方的粉丝列表中移除

self::$redis->zRem($other, $follower);

}

/**

* 获取我的关注列表

* @param $my

* @return array

*/

public static function getFollowList($my)

{

$name = $my . ':follow';

return self::$redis->zRange($name, 0, -1);

}

/**

* 获取我的粉丝列表

* @param $my

* @return array

*/

public static function getFansList($my)

{

$name = $my . ':fans';

return self::$redis->zRange($name, 0, -1);

}

/**

* 人物关系

* @param $my

* @param $other

* @return int

*/

public static function relation($my, $other)

{

// 我关注了他 0

// 他关注了我 1

// 互相关注 2

$myFans = $my . ':fans';

$myFollow = $my . ':follow';

$otherFans = $other . ':fans';

$otherFollow = $other . ':follow';

if (!self::$redis->zScore($myFans, $other) && self::$redis->zScore($myFollow, $other))

return 0;

elseif (!self::$redis->zScore($otherFans, $my) && self::$redis->zScore($otherFollow, $my))

return 1;

elseif (self::$redis->zScore($myFans, $other) && self::$redis->zScore($myFollow, $other))

return 2;

}

/**

* 返回我的关注数和粉丝数

* @param $my

* @return array

*/

public static function count($my)

{

$myFans = $my . ':fans';

$myFollow = $my . ':follow';

return [self::$redis->zCard($myFollow), self::$redis->zCard($myFans)];

}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值