PHP

PHP+Redis ランキング作成

Redis+PHPでランキングを簡単作成

寄稿しました。

 

 

必要なものをインストール

 

# yum install httpd php
# yum install epel-release
# yum --enablerepo=epel install php-pecl-redis redis

# systemctl restart httpd
# systemctl enable httpd
# systemctl start redis
# systemctl enable redis

 

 

ranking.php

# vi /var/www/html/ranking.php
 
<?php
 
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
 
$redis->delete('kingyoSkuiRanking1');
 
$kingyoScore = array(
                        'Tanaka' => 3,
                        'Tarou'  => 6,
                        'Ken'    => 12,
                        'Yuu'    => 15,
                        'Emily'  => 15,
                        'Hanako' => 6,
                        'John'   => 20,
                        'Sato'   => 1,
                        'Natary' => 2,
                        'Honda'  => 1,
                        'Mary'   => 55
                    );
 
 
foreach( $kingyoScore as $player => $score )
{
        $redis->zAdd( 'kingyoSkuiRanking1', $score, $player );
}
 
 
 
$result = $redis->zRevRange( 'kingyoSkuiRanking1', 0, 9, true ); // 1. スコアの高い順から降順で10人分リストを取得する
 
 
var_dump($result);
// array(10) { ["Mary"]=> float(55) ["John"]=> float(20) ["Yuu"]=> float(15) ["Emily"]=> float(15) ["Ken"]=> float(12) ["Tarou"]=> float(6) ["Hanako"]=> float(6) ["Tanaka"]=> float(3) ["Natary"]=> float(2) ["Sato"]=> float(1) }
echo "<hr/>";
 
 
foreach($result as $player => $score)  // 2. 自分のキーとポイントを取得 例として1位の[Mary] => float(55)
{
        ++$score;  // 3. 自分のポイントに+1を行い、自分より多いユーザ数を設定する Maryの55+1=56
        $rank = ($redis->zCount('kingyoSkuiRanking1', $score, '+inf')+1);  // 4. 56のスコアのユーザは0, そこに+1を足してMaryの順位である1になる
        echo "{$player}={$rank}<br/>";
}

 

 

実行結果

array(10) { ["Mary"]=> float(55) ["John"]=> float(20) ["Yuu"]=> float(15) ["Emily"]=> float(15) ["Ken"]=> float(12) ["Tarou"]=> float(6) ["Hanako"]=> float(6) ["Tanaka"]=> float(3) ["Natary"]=> float(2) ["Sato"]=> float(1) }
 
Mary=1
John=2
Yuu=3
Emily=3
Ken=5
Tarou=6
Hanako=6
Tanaka=8
Natary=9
Sato=10

 

 

Amazonおすすめ

iPad 9世代 2021年最新作

iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には通常のiPadをおすすめします><

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)