counterRank是我所写的JRank的核心,所有其他排名组件都基于CounterRank,Counter提供最完备的排名功能,任何Cache只要实现IRedis
的方法即可使用CounterRank,默认使用\Redis
.
- getRankKey
- addRankField
- getRankScore
- batchAddRankField
- batchGetRankScore
- rmRankField
- deleteSelf
- isExistRankField
- increaseRankField
- batchIncreaseRankField
- rank
- rankByScore
- countRankByScore
- count
- exists
- currentRank
$rank = new CounterRank($redis,'activity','test');//新建一个counterRank
var_dump($rank->getRankKey());
//结果: activity:test
$rank->addRankField(1, 2);
var_dump($rank->getRankScore(1));
//结果: 2
$rank->batchAddRankField([
'6' => 20,
'7' => 15
]);
//结果:
//array(5) {
// [1] =>
// int(2)
// [2] =>
// int(6)
// [3] =>
// int(6)
// [6] =>
// int(20)
// [7] =>
// int(15)
//}
$rank->batchGetRankScore([1,2,3]);
//结果:
//array(3) {
// [1] =>
// int(2)
// [2] =>
// int(6)
// [3] =>
// int(6)
//}
$rank->rmRankField(6);
$rank->deleteSelf()
var_dump($rank->isExistRankField(2));
//结果:bool(true)
$rank->increaseRankField(2,3);
//结果:
//array(1) {
// [2] =>
// int(9)
//}
$rank->batchIncreaseRankField([1,2], 2);
//结果:
//array(2) {
// [1] =>
// int(2)
// [2] =>
// int(9)
//}
public function rank($limit, $start = 0, $type = SortType::DESC)
limit
获取排名的个数,(当limit为0时,全部展示)start
从第几位开始截取,默认0type
分为正序或者倒序排列,默认倒序
var_dump($rank->rank(0));
//结果:
array(4) {
[2] =>
double(11)
[5] =>
double(10)
[1] =>
double(4)
[4] =>
double(0)
}
var_dump($rank->rank(2,1,SortType::ASC));
//结果:
array(1) {
[1] =>
double(4)
}
var_dump($rank->rankByScore(0,20));
//结果:
array(4) {
[4] =>
double(0)
[1] =>
double(4)
[5] =>
double(10)
[2] =>
double(11)
}
var_dump($rank->countRankByScore(0,20));
//结果:
int(4)
var_dump($rank->count());
//结果:
int(4)
var_dump($rank->exists());
//结果:
bool(true)
public function currentRank($field, $type = SortType::DESC)
field
field名type
分为正序或者倒序排列,默认倒序
若某个field在该排名不存在,就会返回false
var_dump($rank->currentRank(6));
//结果:bool(false)
var_dump($rank->currentRank(2));
//结果:int(0)
var_dump($rank->currentRank(2,SortType::ASC));
//结果:int(3)