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);
のようなデータを保存するには向いている。