PHPからRedisを利用する際のよく使う構文について
2024/04/18
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());
関連記事
-
MySQLで全国の市区町村のデータを入手し、抽出する方法
都道府県と市区町村が連携したセレクトメニューを作成したかった。具体的には大阪府を ...
-
ON DUPLICATE KEY UPDATE後にinsert_idを取得すると結果が0になる
MySQLでON DUPLICATE KEY UPDATE句指定し、データの登録 ...
-
MySQLでROW_NUMBER関数を使用してグループ毎に連番を設定する方法
以前にMySQLでオートインクリメントを使用せずにグループ毎に連番を設定する方法 ...
-
MySQLのトリガーを使用して特定のテーブルの操作を行った際に別テーブルにログを残す方法
MySQLにトリガーという機能があるらしくどのようなものか調べたところ、事前に「 ...
-
データベースのER図(Entity Relationship Diagram)とエンティティとは
新しい案件で色々書類が添付されており、その中にER図とエンティティという記載があ ...