PHPのRedisクライアントPredis入門 (2.基本操作をしてみよう)

投稿者 : OSCA

[PR] "出川哲朗の充電させてもらえませんか?"で登場したロケ地を紹介するファンサイト「あの場所へ行こう!」はこちら。

 前回は、Predis の概要とインストール方法について解説しました。 本稿では、引き続き Predis の基本操作について解説します。

Redisサーバーへの接続

 Predis は Redis クライアントなので、何はともあれ、Redis サーバーへ接続しないと始まりません。 まずは Redis サーバーへの接続について解説します。

 Predis における Redis サーバーへの接続は、Predisクライアントのインスタンス化と共に接続先を指定して行います。 ただし、接続先ホストが localhost で、接続先ポート番号がデフォルトの6379であれば、次の例のように何も指定せずに Predis クライアントをインスタンス化すれば接続できます。

$client = new Predis\Client();

 もし、ホストが別だったりポート番号が異なる場合は、次のように引数に文字列を指定するか、もしくは連想配列で指定します。

$client = new Predis\Client('tcp://192.168.10.33:6379'); $client = new Predis\Client([
    'scheme' => 'tcp',
    'host'   => '192.168.10.33',
    'port'   => 6379,
]);

 Redisサーバーへの接続ができたら、あとはインスタンス化したオブジェクト(上の例では $client)を利用して Redis サーバーを操作します。

文字列型データの操作

 まずは基本である文字列型データの操作について見ていきます。 ここで利用するメソッドは次のようなものです。

メソッド説明
delete()指定したキーの値を削除します。
get()指定したキーの値を取得します。
set()指定したキーで文字列値を保存します。

 これらのメソッドを利用したサンプルプログラムは、次のようになります。

// Redisに接続すると共にクライアントをインスタンス化
$client = new Predis\Client();

// キー 'hoge' で値 'moge' を保存
$client->set('hoge', 'moge');

// キー 'hoge' の値を取得
$hoge = $client->get('hoge');

// キー 'hoge' を削除
$client->del('hoge');

リスト型データの操作

 リスト型データの操作で利用するメソッドの主なものは次の通りです。

メソッド説明
rpop()指定したキーのリストの末尾から値を取り出します。
lpop()指定したキーのリストの先頭から値を取り出します。
rpush()指定したキーのリストの末尾に値を追加します。
lpush()指定したキーのリストの先頭に値を追加します。

 これらを利用したサンプルプログラムは次の通りです。

$client = new Predis\Client();

$client->rpush("name", "Tom");
$client->rpush("name", "Alex");
$client->lpush("name", "Taro");

$name = $client->lpop("name"); // "Taro"が返却される
$name = $client->rpop("name"); // "Alex"が返却される

$client->del("name");

ハッシュ型データの操作

 次にハッシュ型データの操作についてみていきます、主に利用するのは次のメソッドです。

関数説明
hdel()ハッシュから値を削除します。
hget()ハッシュから値を取得します。
hgetall()ハッシュを取得します。
hset()ハッシュに値を追加します。

 これらを利用したサンプルプログラムは次の通りです。

$client = new Predis\Client();

// ハッシュを追加します
$client->hset('man1', 'name', 'Taro');
$client->hset('man1', 'country', 'Japan');

// 追加したハッシュを取得して表示します
$name = $client->hget('man1', 'name'); // "Taro" が返却される
$country = $client->hget('man1', 'country'); // "Japan" が返却される

// ハッシュを取得します
$man1 = $client->hgetall('man1');
print($man1['name']); // "Taro" が表示される

// ハッシュの特定のキーを削除します
$client->hdel('man1', 'country');

// ハッシュを削除します
$client->del('man1');

セット型データの操作

 最後にセット型データの操作方法をみていきます、主に利用するメソッドは次の通りです。

関数説明
sadd()セットに値を追加します。
smembers()セットを取得します。
srem()セットから値を削除します。

 これらを利用したサンプルプログラムは次の通りです。

$client = new Predis\Client();

// セットを追加します
// 'name' というキーで、'Tom' と 'Mike' の値を追加します
$client->sadd('name', 'Tom', 'Mike');

// セットに更に値を追加します
// セット型のため、Alex だけが追加されます
$client->sadd('name', 'Alex', 'Tom');

// セットから値を削除します
$client->srem('name', 'Tom');

// セットを取得します (配列で返却されます)
$name = $client->smembers('name');
print_r($name);

# セットを削除します
$client->del('name');

おわりに

 本稿ではRedisクライアント「Predis」の基本操作について解説しました。 Predis を活用するきっかけになれば幸いです。

PHP環境構築トップページへ戻る

PHPのトップへ戻る

著者 : OSCA

OSCA

Java, PHP 系のWEBエンジニア。 WEBエンジニア向けコミュニティ「WEBエンジニア勉強会」を主催。 個人として何か一つでも世の中の多くの人に使ってもらえるものを作ろうと日々奮闘中。
@engineer_osca