thinkphp5操作zset有序集合

**

thinkphp5操作zset有序集合

**
**redis 五大类型之zset有序集合
基本命令:
zadd 给有序集合添加一个成员和分支
zrem 删除一个有序集合的成员
zcard 集合数量
zcount 返回分支介于min和max中间的成员数量
zincrby 给集合成员加上value值
zrank 返回成员在集合中的位置
zscore 返回成员的分值
zrange 返回集合的元素,0 -1 为所有成员
zrangesbycore返回集合中给定分值的成员

服务端redis.php扩展

/*
 * zadd 给有序集合添加一个成员和分支
 */
public function zAdd($name,$val,$key)
{
    return $this->handler->zadd($name,$val,$key);
}

/*
 *  zrem 删除一个有序集合的成员
 */
public function zRem($name,$key)
{
    $num = 0;
    if(is_array($key)){
        foreach ($key as $row){
            $num+= $this->handler->zrem($name,$row);
        }
        return $num;
    }else{
        return $this->handler->zrem($name,$key);
    }
}

/*
 * zcard 集合数量
 */
public function zCart($name)
{
    return $this->handler->zcard($name);
}

/*
 * zincrby 给集合成员加上value值
 */
public function zIncRby($name,$val,$key)
{
    return $this->zincrby($name,$val,$key);
}

/*
 * zcount 返回分支介于min和max中间的成员数量
 */
public function zCount($name,$min=0,$max=100000000)
{
    return $this->handler->zount($name,$min,$max);
}

/*
 * zrank 返回成员在集合中的位置
 */
public function zRank($name,$key)
{
    return $this->handler->zrank($name,$key);
}

/*
 *  zscore 返回成员的分值
 */
public function zScore($name,$key)
{
    return $this->handler->zscore($name,$key);
}

/*
 * zrange 返回集合的元素,0 -1 为所有成员
 */
public function zRange($name,$start = 0 , $over = -1 ,$withscores)
{
    if($withscores){
        return $this->handler->zrange($name,$start,$over,$withscores);
    }else{
        return $this->handler->zrange($name,$start,$over);
    }

}

/*
 * zrangescore 返回集合中给定分值的成员
 */
public function zRangeByScore($name,$start = 0 , $over = 100000000 ,$withscores)
{
    if($withscores){
        return $this->handler->zrangebyscore($name,$start,$over,$withscores);
    }else{
        return $this->handler->zrangebyscore($name,$start,$over);
    }

}

1.zadd ,zrem ,zcount ,zrange
客户端请求

public function redis()
{
    $redis= new Redis();
    $redis->zAdd('demo','10','v1');
    $redis->zAdd('demo','20','v2');
    $redis->zAdd('demo','30','v3');
    dump($redis->zRange('demo'));
    echo $redis->zCount('demo');
    $redis->zRem('demo','v3');
    dump($redis->zRange('demo'));
}	

结果:

array(3) {
  [0] => string(2) "v1"
  [1] => string(2) "v2"
  [2] => string(2) "v3"
}
3
array(2) {
  [0] => string(2) "v1"
  [1] => string(2) "v2"
}

2.zincrby ,zscore
客户端请求

public function redis()
{
    $redis= new Redis();
    echo $redis->zScore('demo','v1');
    $redis->zIncRby('demo','10','v1');
    echo $redis->zScore('demo','v1');
}

结果

10
20

3.zcard ,zrank
客户端请求

 public function redis()
{
    $redis= new Redis();
    echo $redis->zCart('demo');
    echo $redis->zrank ('demo','v1');
}

结果

2
1

4.zrangescore
客户端请求

public function redis()
{
    $redis= new Redis();
    dump($redis->zRangeByScore('demo','10','20'));

}

结果

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值