ITRedisPHP

Redisに配列を保存する for PHP

Redisに配列を保存するには、いくつかの方法があります。 しかし、普通にsetしたのでは、配列は保存できないでしょう。 そのため、配列を保存するためのいくつかの方法を紹介します。 以降の記述では、

$host = '127.0.0.1';
$port = 6379;
$r = new Redis();
$r->connect($host, $port);

を省略し、$rでredisに接続できるものとします。

別の形式に書き換えて登録する

JSONに書き換える

$r->set('key' , json_encode($array));
json_decode($r->get('key'));

シリアライズ化する

$r->set('key' , serialize($array));
unserialize($r->get('key'));

hSet(hMSet)を利用する Redisで用意された型の一つ、ハッシュ型は配列を登録することができる。 hSet(‘取得に使用するキー名’ , ‘登録Key’ , ‘登録Value’ ); または、 hMSet(‘取得に使用するキー名’ , array( ‘登録Key’ => ‘登録Value’)); keyとvalueをセットで配列に保存できる唯一の型だが、多次元の配列は保存することはできない。 Redisはシンプルなデータのやり取りは高速だが、複雑なデータのやり取りには向いていないため、おすすめはしないが、どうしても保存したい場合には、別の形式に置き換え登録をする。 また、取得する場合には、 hvals 登録された値の一覧を取得する hkeys 登録されたキーの一覧を取得する hgetall 登録された値とキーのセットを一覧で取得する 使用例

$user_info = array('id'   => 1,
                   'name' => 'took',
                   'age'  => 22
);
$r->hMSet('user01' , $user_info);

のようなデータを保存するには向いている。