勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPからRedisを利用する際のよく使う構文について

   2024/04/18  PHP データベース

PHPからRedisを利用する際のよく使う構文について以下にメモ。

 

接続開始

$redis = new Redis();
$redis->connect('127.0.0.1', 6379) or die('connect error');

エラーで止めたくない場合は以下のように分岐させる。

if( $redis->connect('127.0.0.1', 6379) ){
    //接続OK時
} else {
    //接続NG時
}

 

データベースの選択

$redis->select(ここにデータベースナンバー);

データベースナンバーを指定しない場合デフォルトでdb0が指定される

また、デフォルトだと0~15まで指定可能で、それ以上に増やしたい場合は以下設定ファイルのdatabase部分を編集すること。

/etc/redis.conf

 

接続終了

$redis->close();

 

データの格納と読み込み

string(文字列)

ソースコード等

1つのkeyに対して1GBまで格納できるとのこと。

$redis->set('hoge','huga');
var_dump($redis->get('hoge')); //string(4) "huga" 
var_dump($redis->get('fuge')); //bool(false)

存在しないkeyを指定するとfalseが返ってくるので条件分岐の際等に利用する。

尚、同じkeyで違う値を入れると上書きされる点に注意。

また、以下のように指定することで有効期間が指定できる(この場合だと10秒間)。

$redis->setex('hoge',10,'huga');

ドキュメント

http://redis.shibu.jp/commandreference/strings.html

 

list(リスト型)

ソースコード等

重複OKな文字列のリスト型。前後から出し入れ、
範囲指定等で取出しが可能。ノーマルな配列と似たような感触。

$redis->rpush('hoge','ho');
$redis->lpush('hoge','ho2');
$redis->rpush('hoge','ho3');
var_dump($redis->lrange('hoge',0,$redis->llen('hoge'))); //array(3) { [0]=> string(3) "ho2" [1]=> string(2) "ho" [2]=> string(3) "ho3" }

keyが存在しない場合はfalseが返る。

尚、有効期間を指定したい時は以下のように記述する。

$redis->expire('key',秒数);

逆に秒数を確認したい時は以下で確認できる。

var_dump($redis->ttl('hoge'));

keyが存在しなかったり、有効期間が設定されていない場合は-1が返るので注意すること。

ドキュメント

http://redis.shibu.jp/commandreference/lists.html

 

hash(ハッシュ型)

1つのkeyに対してfield-valueで格納する。多次元連想配列っぽいもの。

ソースコード等

$redis->hset('age','tanaka',19);
$redis->hset('age','yamada',22);
var_dump($redis->hget('age','tanaka')); //string(2) "19"
var_dump($redis->hget('age','suzuki')); //bool(false)

expireで秒数も指定できる。秒数が過ぎた場合は
そのkeyの値が全て消える。

また、重複登録は不可となっており以下のように記述した場合、33歳に上書きされる。

$redis->hset('age','tanaka',33);

ドキュメント

http://redis.shibu.jp/commandreference/hashes.html

 

set(セット型) / sorted set(ソート済みセット型)

ソースコード等

順不同の文字列型集合。

$redis->sadd('huga','fufu');
var_dump($redis->SPOP('huga')); //string(4) "fufu"

これの使い方、使い道はよく分からなかった。

ドキュメント

http://redis.shibu.jp/commandreference/sets.html

http://redis.shibu.jp/commandreference/sortedsets.html

 

その他

サーバー情報や統計情報、バージョン等を出力

var_dump($redis->info());

 - PHP データベース

  関連記事

MySQLで全国の市区町村のデータを入手し、抽出する方法

都道府県と市区町村が連携したセレクトメニューを作成したかった。具体的には大阪府を ...

ON DUPLICATE KEY UPDATE後にinsert_idを取得すると結果が0になる

MySQLでON DUPLICATE KEY UPDATE句指定し、データの登録 ...

MySQLでROW_NUMBER関数を使用してグループ毎に連番を設定する方法

以前にMySQLでオートインクリメントを使用せずにグループ毎に連番を設定する方法 ...

MySQLのトリガーを使用して特定のテーブルの操作を行った際に別テーブルにログを残す方法

MySQLにトリガーという機能があるらしくどのようなものか調べたところ、事前に「 ...

データベースのER図(Entity Relationship Diagram)とエンティティとは

新しい案件で色々書類が添付されており、その中にER図とエンティティという記載があ ...