php操作redis数据库常见方法实例总结(4)
七、redis的有序集合(sorted set)操作
//将一个或多个成员元素及其分数值加入到有序集当中。 //如果某个成员已经是有序集的成员,则更新这个成员的分数值,并通过重新插入这个成员元素,来保证该成员在正确的位置上。 //分数值可以是整数值或双精度浮点数。 $ret = $redis->zadd('scores', 60, 'math', 80, 'english', 75, 'chinese'); var_dump($ret); //返回有序集中指定区间内的成员。成员按分数从小到大排序,分数值相同的则按字典序来排序。 //参数:第四个参数表示是否返回各个元素的分数值,默认为false。 $ret = $redis->zRange('scores', 0, -1, true); var_dump($ret); //返回有序集中指定区间内的成员。成员按分数值从大到小排序,分数值相同的则按字典序的逆序来排序。 $ret = $redis->zRevRange('scores', 0, -1, true); var_dump($ret); //返回有序集中指定分数区间的成员列表,按分数值从小到大排序, //分数值相同的则按字典序来排序。默认使用闭区间。 $ret = $redis->zRangeByScore('scores', 60, 90, ['withscores' => true]); var_dump($ret); //返回有序集中指定分数区间的成员列表,按分数值递减排序, //分数值相同的则按字典序的逆序来排序。 //注意,区间表示的时候大值在前,小值在后,默认使用闭区间。 $ret = $redis->zRevRangeByScore('scores', 90, 60, ['withscores' => true]); var_dump($ret); //迭代有序集合中的元素。 //返回值:[元素名 => 分数值, ...] $ret = $redis->zScan('scores', $iter, '*', 10); var_dump($ret); var_dump($iter); //返回指定有序集的元素数量。 $ret = $redis->zCard('scores'); var_dump($ret); //返回有序集中指定分数区间的成员数量。 $ret = $redis->zCount('scores', 60, 90); var_dump($ret); //返回有序集中指定成员的分数值。若成员不存在则返回false。 $ret = $redis->zScore('scores', 'english'); var_dump($ret); //返回有序集中指定成员的排名,按分数值从小到大排序。分数值最小者排名为0。 $ret = $redis->zRank('scores', 'english'); var_dump($ret); //返回有序集中指定成员的排名,按分数值从大到小排序。分数值最大者排名为0。 $ret = $redis->zRevRank('scores', 'english'); var_dump($ret); //移除有序集中的一个或多个成员,忽略不存在的成员。返回删除的元素个数。 $ret = $redis->zRem('scores', 'english'); var_dump($ret); //移除有序集中指定排名区间的所有成员。 $ret = $redis->zRemRangeByRank('scores', 0, 2); var_dump($ret); //移除有序集中指定分数值区间的所有成员。 $ret = $redis->zRemRangeByScore('scores', 60, 90); var_dump($ret); //对有序集中指定成员的分数值增加指定增量值。 //若为负数则做减法,若有序集不存在则先创建,若有序集中没有对应成员则先添加,最后再操作。 $ret = $redis->zIncrBy('scores', 2, 'chinese'); var_dump($ret); //计算给定一个或多个有序集的交集,并将其存储到一个目的有序集中。 //参数:目的有序集合,多个有序集合,多个有序集合的权重,合并有序集合的方式(成员的分数值与权重相乘后的是相加或是比较大小) $redis->zAdd('s1', 1, '111'); $redis->zAdd('s1', 2, '222'); $redis->zAdd('s1', 3, '333'); $redis->zAdd('s2', 4, '222'); $redis->zAdd('s2', 5, '333'); $ret = $redis->zInter('s3', ['s1', 's2'], [1, 5], 'SUM'); // ['222' => 22, '333' => 28] var_dump($ret); $ret = $redis->zInter('s4', ['s1', 's2'], [1, 5], 'MIN'); // ['222' => 2, '333' => 3] var_dump($ret); $ret = $redis->zInter('s5', ['s1', 's2'], [1, 5], 'MAX'); // ['222' => 20, '333' => 25] var_dump($ret); //计算给定一个或多个有序集的并集,并将其存储到一个目的有序集中。 //结果集中某个成员的分数值是所有给定集下该成员分数值之和。 $ret = $redis->zUnion('s6', ['s1', 's2'], [5, 1], 'SUM'); // ['111' => 5, '222' => 14, '333' => 20] var_dump($ret); $ret = $redis->zUnion('s7', ['s1', 's2'], [5, 1], 'MIN'); // ['222' => 4, '111' => 5, '333' => 5] var_dump($ret); $ret = $redis->zUnion('s8', ['s1', 's2'], [5, 1], 'MAX'); // ['111' => 5, '222' => 10, '333' => 15] var_dump($ret);
内容版权声明:除非注明,否则皆为本站原创文章。