php操作redis,有序集合zset

mrtwenty發表於2019-07-04

常見的有序集合操作有如下幾個:

1、新增成員到集合裡 zAdd、zIncrBy

2、取出前N名 zRevRange 

3、刪除指定成員 zDelete、zRem、zRemove

4、取出某個成員的排名和分數 zSorce、zRevRank

5、統計數量 zSize、

6、統計指定分數區間的個數 zCount

7、取出滿足指定分數區間的成員,總小到大 zRangeByScore

8、取出所有成員 zRange

<?php

$redis  = new redis();
$result = $redis->connect('127.0.0.1', 6379);
if ($result !== true) {
    echo "連線redis失敗!";
    exit;
}
$result = $redis->auth('123456'); //密碼
if ($result !== true) {
    echo "auth err";
    exit;
}

echo "<pre>";

//有序集合
//常見操作,
echo "1、新增成員到集合裡<br/>";
//新增資料到key為sort裡
$redis->zAdd('sort', 80, 'mrtwenty'); //存在就修改, 不存在就新增到集合中去
$redis->zAdd('sort', 92, 'xiaohei');
$redis->zAdd('sort', 99, 'zhao');
$redis->zAdd('sort', 90, 'xiaoming');
//A如果不存在,就新增A進入,並初始化值為1,如果存在就給A加1,分數1也可以是負的,
$redis->zIncrBy('sort', 1, 'A');
print_r($redis->zRange('sort', 0, -1));
echo "<hr/>";

echo "2、取出前三名<br/>";
$list = $redis->zRevRange('sort', 0, 2);
print_r($list);

echo "取出前三名,包括他們的值<br/>";
$list = $redis->zRevRange('sort', 0, 2, true);
print_r($list);
echo "<hr/>";

echo "3、zDelete、zRem、zRemove 刪除指定成員,返回的值1表示成功, 0表示失敗<hr/>";
$result = $redis->zDelete('sort', 'A');

echo "4、取出某個成員的排名或者分數<br/>";
printf("返回集合中zhao的分數:%d<br/>", $redis->zScore('sort', 'zhao'));
//如果返回false表示不存在集合中,0表示第一名 zRevRank 從大到小排名 zRank    從小到大排名
printf("返回zhao在集合中的排名:%d<hr/>", $redis->zRevRank('sort', 'zhao'));

printf("5、統計數量:%d<hr/>", $redis->zSize('sort')); //也可以值zCard

printf("6、返回80分到100分之間的個數:%d<hr/>", $redis->zCount('sort', 80, 100));

echo "7、取出滿足指定分數區間的成員,總小到大<br/>";
$list = $redis->zRangeByScore('sort', 90, 100);
//withscores表示是否取出分數,limit用來實現分頁
// $list = $redis->zRangeByScore('sort', 90, 100, ['withscores' => true, 'limit' => [0, 2]]);
print_r($list);
echo "<hr/>";

//8、取出所有的key,0表示從第一個開始取,-1表示最後一個
echo "8、取出所有成員:<br/>";
$list = $redis->zRange('sort', 0, -1);
print_r($list);

 

相關文章