Help us understand the problem. What is going on with this article?

phpredisの使い方まとめ

More than 3 years have passed since last update.

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"
}
*/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away