phpredisの使い方まとめ


phpreidsの使い方の日本語の情報が少なかったのでまとめます。

前準備

  • Redisのインストール
  • phpredisのインストール

環境によってインストールの方法が異なってくるのでここでは省きます。

test.php
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

echo $redis->ping();

+PONG と出力されればOK。

Redisで扱えるデータ型

  • String
  • List
  • Set
  • Sorted Set
  • Hash

String

文字列や数値など、Keyに対して1つに定まる値。

test.php
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// hogeというkeyにhugaという値をセット
$redis->set('hoge', 'huga');

// 値を取得する
$value = $redis->get('hoge');

// 表示
echo $value; // huga

List

順番を持った値の集合

test.php
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// lPushは先頭、rPushは末尾に値をpush
$redis->rPush('hoge', 'a');
$redis->rPush('hoge', 'b');
$redis->lPush('hoge', 'c');
$redis->lPush('hoge', 'd');

// 値をすべて取得する -1はすべて
$value = $redis->lRange('hoge', 0, -1);

// 表示
var_dump($value);

array(4) {
  [0] =>
  string(1) "d"
  [1] =>
  string(1) "c"
  [2] =>
  string(1) "a"
  [3] =>
  string(1) "b"
}

Set

順不同の値の集合。重複を許さない

test.php
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// 値を追加
$redis->sAdd('hoge1' , '1');
$redis->sAdd('hoge1' , '2');
$redis->sAdd('hoge2' , '2');
$redis->sAdd('hoge2' , '3');
$redis->sAdd('hoge2' , '4');

// 和、積、差を取得する
$union = $redis->sUnion('hoge1', 'hoge2');
$inter = $redis->sInter('hoge1', 'hoge2');
$diff  = $redis->sDiff('hoge1', 'hoge2');

// 表示
var_dump($union);
var_dump($inter);
var_dump($diff);

/*
array(4) {
  [0] =>
  string(1) "1"
  [1] =>
  string(1) "2"
  [2] =>
  string(1) "3"
  [3] =>
  string(1) "4"
}
array(1) {
  [0] =>
  string(1) "2"
}
array(1) {
  [0] =>
  string(1) "1"
}
*/

Sorted Set

セット型と同様の特徴に加え、個々の値がスコアを持つ。

test.php
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// スコアと値を追加
$redis->zAdd('hoge' , 10, 'a');
$redis->zAdd('hoge' , 20, 'b');
$redis->zAdd('hoge' , 30, 'c');
$redis->zAdd('hoge' , 40, 'd');
$redis->zAdd('hoge' , 50, 'e');
$redis->zAdd('hoge' , 60, 'f');

// ソート済のスコアを取得
$value = $redis->zRangeByScore('hoge', 0, 60);

// 表示
var_dump($value);

/*
array(6) {
  [0] =>
  string(1) "a"
  [1] =>
  string(1) "b"
  [2] =>
  string(1) "c"
  [3] =>
  string(1) "d"
  [4] =>
  string(1) "e"
  [5] =>
  string(1) "f"
}
*/

Hash

Fieldとvalueを1セットとする値の集合

test.php
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// 値をセット
$redis->hSet('hoge', 'hoge1', 1);
$redis->hSet('hoge', 'hoge2', 2);
$redis->hSet('hoge', 'hoge3', 3);

// 値を取得
$value1 = $redis->hGet('hoge', 'hoge1');
$value2 = $redis->hGet('hoge', 'hoge2');
$all = $redis->hGetAll('hoge');

// 表示
var_dump($value1);
var_dump($value2);
var_dump($all);

/*
string(1) "1"
string(1) "2"
array(3) {
  'hoge1' =>
  string(1) "1"
  'hoge2' =>
  string(1) "2"
  'hoge3' =>
  string(1) "3"
}
*/