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に保存したデータをJSON形式で取得する方法
MySQLに保存したデータをJSON形式で利用したいということがたまにある(Ja ...
-
MySQLで全文検索(フルテキストインデックス)を使用する方法
普段利用しているサイトに検索用のテキストボックスがあり、そこに何らかのワードを入 ...
-
MySQLにてSELECT時にdate型のカラムから干支(十二支)を計算し表示する方法
MySQLにdate型のカラムに誕生年月日が格納されており、そこから干支(十二支 ...
-
MySQLでdatetime型のカラムから秒は省いて検索する方法
MySQLでdatetime型のカラムに対して「2022-10-07 10:30 ...
-
MySQLでSELECT時に数値を3桁ずつのカンマ区切りに変換する方法
MySQLで商品価格のような数値の値を3桁ずつのカンマ区切りで取り出したいという ...