ThinkPHP5+Redis Zset(有序集合)操作


    //将一个或多个元素插入到集合里面,默认从尾部开始插入    
    //增加一个或多个元素,如果该元素已经存在,更新它的socre值    
    //虽然有序集合有序,但它也是集合,不能重复元素,添加重复元素只会更新原有元素的score值    
    $redis->zAdd('key', 1, 'val1');    
    $redis->zAdd('key', 0, 'val0');    
    $redis->zAdd('key', 5, 'val5');    
    $redis->zRange('key', 0, -1); // array(val0, val1, val5)    
    
    //如果要在头部插入,则找一个元素,在元素后面添加一个你需要插入的元素即可    
    $redis->zAdd('sorted1',100,'坑啊',98.999,99,90,90,80,80,60,60,70,70);    
   // $redis->zAdd('集合',浮点数(元素),'key',(插入头部的数据),key);
    
    //返回有序集中指定区间内的成员。成员按分数值递增排序,分数值相同的则按字典序来排序。    
    //取得特定范围内的排序元素,0代表第一个元素,1代表第二个以此类推。-1代表最后一个,-2代表倒数第二个...    
    //参数:第四个参数表示是否返回各个元素的分数值,默认为false。    
    //根据开始结束索引获取集合中的元素,-1表示最后一个,排序值越大的越靠后,如果相等,则后添加的靠后    
    $redis->zRange('sorted', 0, -1, true);
    
    //返回有序集中指定区间内的成员。成员按分数值递减排序,分数值相同的则按字典序的倒序来排序。    
    $redis->zReverseRange('sorted', 0, -1, true);
    
    //返回key对应的有序集合中指定区间的所有元素。    
    //这些元素按照score从高到低的顺序进行排列。对于具有相同的score的元素而言,将会按照递减的字典顺序进行排列。    
    //该命令与ZRANGE类似,只是该命令中元素的排列顺序与前者不同。    
    $redis->zAdd('key', 0, 'val0');    
    $redis->zAdd('key', 2, 'val2');    
    $redis->zAdd('key', 10, 'val10');    
    $redis->zRevRange('key', 0, -1); /* array('val10', 'val2', 'val0') */    
    // with scores    
    $redis->zRevRange('key', 0, -1, true); /* array('val10' => 10, 'val2' => 2, 'val0' => 0) */
    
    //返回有序集中指定分数区间的成员列表,按分数值递增排序    
    $redis->zRangeByScore('sorted', 10, 99);    
    
    //自定义返回的序集返回起始位置及条数    
    $redis->zRangeByScore('sorted', 0,90,['limit' =>[0,2]]);
    
    //返回有序集中指定分数区间的成员列表,按分数值递减排序,分数值相同的则按字典序的倒序来排序。
    //注意,区间表示的时候大值在前,小值在后。    
    $redis->zRevRangeByScore('sorted', 100, 90);
    
    //迭代有序集合中的元素。    
    //可理解为查找指定的值,将元素修改为float类型    
    //返回值:[元素名=>分数值,,..]    
    $redis->zscan('sorted', $it, 100, 10);
    
    //返回存储在key对应的有序集合中的元素的个数。    
    $redis->zAdd('key', 0, 'val0');    
    $redis->zAdd('key', 2, 'val2');    
    $redis->zAdd('key', 10, 'val10');    
    $redis->zSize('key'); /* 3 */    
    $redis->zCard('key');/* 3 */
    
    //返回有序集中指定分数区间的成员数量。    
    $redis->zCount('sorted', 90, 100);
    
    //返回有序集中指定成员的分数值。若成员不存在则返回false。    
    $redis->zScore('sorted', 'math');
    
    //返回有序集中指定成员元素的大小排名,按分数值递增排序。分数值最小者排名为0。    
    //返回key对应的有序集合中member元素的索引值,元素按照score从低到高进行排列。    
    //rank值(或index)是从0开始的,这意味着具有最低score值的元素的rank值为0。使用ZREVRANK可以获得从高到低排列的元素的rank(或index)。    
    $redis->zAdd('key', 1, 'one');    
    $redis->zAdd('key', 2, 'two');    
    $redis->zRank('key', 'one'); /* 0 */    
    $redis->zRank('key', 'two'); /* 1 */    
    $redis->zRevRank('key', 'one'); /* 1 */    
    $redis->zRevRank('key', 'two'); /* 0 */
    
    //返回有序集中指定成员元素的排名,按分数值递减排序。分数值最大者排名为0。    
    $redis->zRevRank('sorted', 70);
    
    //从有序集合中删除指定的成员。    
    $redis->zAdd('key', 0, 'val0');    
    $redis->zAdd('key', 2, 'val2');    
    $redis->zAdd('key', 10, 'val10');    
    $redis->zDelete('key', 'val2');    
    $redis->zRange('key', 0, -1); /* array('val0', 'val10') */
    
    //删除有序集中的一个或多个成员,忽略不存在的成员。返回删除的元素个数。    
    $redis->zRem('sorted', 'chemistry', 'English');
    
    //删除有序集中指定排名区间的所有成员,返回删除元素个数    
    $redis->zRemRangeByRank('sorted', 0, 2);
    
    //删除有序集中指定分数值区间的所有成员,返回删除元素的个数    
    $redis->zRemRangeByScore('sorted', 80, 90);
    
    //对有序集中指定成员的分数值增加指定增量值。若为负数则做减法,若有序集不存在则先创建,若有序集中没有对应成员则先添加,最后再操作。    
    $redis->zIncrBy('sorted', 2, 'Chinese');
    
    //计算给定一个或多个有序集的交集,元素相加,并将其存储到目的有序集中    
    $redis->zinterstore('zset3',['sorted','sorted1']);
    
    //计算给定一个或多个有序集的并集,元素相加,并将其存储到目的有序集中    
    $redis->zunionstore('zset3',['sorted', 'sorted1']);


最新回复 (0)
发新帖