FuelPHPでRedisを使用する

FuelPHPには、標準でRedisクラスが用意されている為、特別な事をする必要はなく、そのままRedisへアクセスが可能です。

例によって、ソート済みセット型を使用した、ランキング風のサンプルで試しました。

以下は、ユーザー名と年齢のリストをソート済みセット型に追加し、要素を取得するサンプルになります。

<?php
class Controller_Redistest extends Controller
{
    public function action_index()
    {
        $redis = Redis::instance('default');

        $staff = array(
                     'staff1' => 30,
                     'staff2' => 25,
                     'staff3' => 42,
                     'staff4' => 60,
                     'staff5' => 38
                 );

        foreach ($staff as $name => $age) {
            // 年齢をスコアとして、スタッフ名をメンバーとして登録
            $redis->zadd('mysort', $age, $name);
        }

        // 年齢の昇順リスト
        $list = $redis->zrange('mysort', 0, count($staff));

        // 年齢の降順リスト
        $rlist = $redis->zrevrange('mysort', 0, count($staff));

        // 昇順の場合の staff4 の順位(ランクが0から始まる為、1を足す)
        $rank = $redis->zrank('mysort', 'staff4') + 1;

        // 降順の場合の staff4 の順位(ランクが0から始まる為、1を足す)
        $rrank = $redis->zrevrank('mysort', 'staff4') + 1;
        ...
    }
}

Redis::instanceにセットする名前は『fuel/app/config/db.php』の『redis』に設定した名前になります。

'redis' => array(
        'default' => array(
                'hostname' => '127.0.0.1',
                'port'     => 6379
        )
),