thinkphp5操作redis系列教程 ---有序集合篇

本文详细讲解了如何使用ThinkPHP5框架操作Redis的有序集合,涵盖了从删除元素到查询范围、计数、增加分数等核心方法,包括zRemRangeByRank、zDeleteRangeByScore、zInter、zIncrBy、zRank、zScore等多个实用操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.有序集合类型之zRemRangeByRank() zDeleteRangeByRank()


       /**
         * 有序集合(sorted set)和set一样是字符串的集合,不能重复元素,不同的是每个元素都会关联一个
         * double类型的score,score的主要作用是排序,因此sorted set
         * 主要用作索引
         */
 
        $redis->zAdd('key', 1, 'one');
        $redis->zAdd('key', 2, 'two');
        $redis->zAdd('key', 3, 'three');
        // zRemRangeByRank() zDeleteRangeByRank()
        // 移除key对应的有序集合中rank值介于start和stop之间的所有元素
        echo $redis->zDeleteRangeByRank('key', 0, 1); //2

2.有序集合类型之zRemRangeByScore, zDeleteRangeByScore

 /**
         * 有序集合(sorted set)和set一样是字符串的集合,不能重复元素,不同的是每个元素都会关联一个
         * double类型的score,score的主要作用是排序,因此sorted set
         * 主要用作索引
         */
        $redis->zAdd('key', 0, 'val0');
        $redis->zAdd('key', 3, 'val2');
        $redis->zAdd('key', 10, 'val10');
        // zRemRangeByScore() zDeleteRangeByScore()移除有序集合中scroe位于min和max(包含端点)之间的元素
        echo $redis->zRemRangeByScore('key', 0, 3); //2
 
        $res = $redis->zRange('key',0,-1);
        dump($res);
        /**
         * array(1) {
        [0]=>
        string(5) "val10"
        }
         */

3.有序集合类型之zInter

 /**
         * 有序集合(sorted set)和set一样是字符串的集合,不能重复元素,不同的是每个元素都会关联一个
         * double类型的score,score的主要作用是排序,因此sorted set
         * 主要用作索引
         */
        $redis->zAdd('k1', 0, 'val0');
        $redis->zAdd('k1', 1, 'val1');
        $redis->zAdd('k1', 3, 'val3');
 
        $redis->zAdd('k2', 2, 'val1');
        $redis->zAdd('k2', 3, 'val3');
 
        // 将有序集合的交集存储到新的集合
        $redis->zInter('ko1', array('k1', 'k2'));
 
        $res = $redis->zRange('ko1',0,-1);
        dump($res);
        /**
         * array(2) {
        [0]=>
        string(4) "val1"
        [1]=>
        string(4) "val3"
        }
         */

4.有序集合类型之zIncrBy

  /**
         * 有序集合(sorted set)和set一样是字符串的集合,不能重复元素,不同的是每个元素都会关联一个
         * double类型的score,score的主要作用是排序,因此sorted set
         * 主要用作索引
         */
 
        $redis->zAdd('key', 1, 'one');
        $redis->zAdd('key', 2, 'two');
        //zIncrBy() 将有序集合中member元素的score加上increment
        echo $redis->zIncrBy('key',6.66,'one');//7.66
        echo $redis->zIncrBy('key',8.88,'two');//10.88
 

5.有序集合类型之zRank,zRevRank

  $redis->zAdd('key', 1, 'one');
        $redis->zAdd('key', 2, 'two');
        // zRank() 返回key对应的有序集合中member元素的索引值
        echo $redis->zRank('key', 'one'); // 0
        echo $redis->zRank('key', 'two'); // 1
        echo "<hr/>";
        // zRevRank()可以获得从高到低排列的元素的rank(或index)。
        echo $redis->zRevRank('key', 'one'); // 1
        echo $redis->zRevRank('key', 'two'); // 0

6.有序集合类型之zScore

   // zAdd() 将一个或多个成员元素及其分值添加到有序集合中
        $redis->zAdd('key', 1, 'val1');
        $redis->zAdd('key', 0, 'val0');
        $redis->zAdd('key', 5, 'val5');
        //zScore() 返回有序集合中member的score值
        $res = $redis->zScore('key','val5');
        var_dump($res);//float(5)

7.有序集合类型之zSize,

 // zAdd() 将一个或多个成员元素及其分值添加到有序集合中
        $redis->zAdd('key', 1, 'val1');
        $redis->zAdd('key', 0, 'val0');
        $redis->zAdd('key', 5, 'val5');
        //zCard() zSize() 返回有序集合中元素的个数
        echo $redis->zSize('key');//3
        echo $redis->zCard('key');//3

8.有序集合类型之zCount

 // zAdd() 将一个或多个成员元素及其分值添加到有序集合中
        $redis->zAdd('key', 1, 'val1');
        $redis->zAdd('key', 0, 'val0');
        $redis->zAdd('key', 5, 'val5');
        // zCount() 返回集合中分数值在min和max之间的元素的个数
        $res = $redis->zCount('key',0,3);
        dump($res);//int(2)

9.有序集合类型之zRangeByScore


     // zAdd() 将一个或多个成员元素及其分值添加到有序集合中
        $redis->zAdd('key', 1, 'val1');
        $redis->zAdd('key', 0, 'val0');
        $redis->zAdd('key', 5, 'val5');
 
        // zRevRange() 返回指定区间的元素,元素按照score从低到高的顺序排列
        $res = $redis->zRangeByScore('key', 0, 3, array('withscores' => TRUE));
        dump($res);
        /**
         * array(2) {
        ["val0"]=>
        float(0)
        ["val1"]=>
        float(1)
        }
         */

10.有序集合类型之zRevRange


        // zAdd() 将一个或多个成员元素及其分值添加到有序集合中
        $redis->zAdd('key', 1, 'val1');
        $redis->zAdd('key', 0, 'val0');
        $redis->zAdd('key', 5, 'val5');
 
        // zRevRange() 返回指定区间的元素,并且按照递减排序
        $res = $redis->zRevRange('key',0,-1,true);
        dump($res);
        /**
         *
            array(3) {
              ["val5"] => float(5)
              ["val1"] => float(1)
              ["val0"] => float(0)
            }
         */

11.有序集合类型之zRem,zDelete

   // zAdd() 将一个或多个成员元素及其分值添加到有序集合中
        $redis->zAdd('key', 1, 'val1');
        $redis->zAdd('key', 0, 'val0');
        $redis->zAdd('key', 5, 'val5');
        // zDelete()从有序集合中删除指定成员元素
        $redis->zDelete('key','val1');
        // zRem()从有序集合中删除指定成员元素
        $redis->zRem('key','val0');
        // zRange() 返回指定区间内的集合元素
        $res = $redis->zRange('key',0,-1);
        var_dump($res);
        /**
         * array(1) { [0]=> string(4) "val5" }
         */

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值