開発ブログ

株式会社Nextatのスタッフがお送りする技術コラムメインのブログ。

電話でのお問合わせ 075-744-6842 ([月]-[金] 10:00〜17:00)

  1. top >
  2. 開発ブログ >
  3. PHP >
  4. Laravel >
  5. [Laravel] RedisのSETコマンドで期限も一緒に指定する
no-image

[Laravel] RedisのSETコマンドで期限も一緒に指定する

こんにちは、ナカエです。 本日はLaravelのRedisについての豆知識です。

LaravelでRedisを用いて指定したキーに期限を設定する場合、下記のようなコード例を挙げる記事が多く見つかります。

Redis::get($key, $value);
Redis::expire($key, 3600);

都合2回Redisにアクセスすることになるのですが、RedisのSETコマンドには期限を同時に設定するオプションが存在します。

SET key value EX 3600

Laravelでの対応

LaravelのRedisファサードのset()メソッドもこのオプションに対応していて、第三引数と第四引数で指定することができます。
※ 中身のIlluminate\Redis\Connections\PhpRedisConnection::set()などが対応しているという方が正確ですが。

Redis::set($key, $value,  ‘EX’, 3600);

第三引数の $expireResolution は第四引数の $expireTTL の解釈方法を決めるものと認識すれば良く、例えば'EX'以外にも'PX'を指定して第四引数をミリ秒単位にすることも可能なようです。

※ なお、EXやPXのオプションを利用するにはRedisのバージョンが2.6.12である必要があります。
参考: SET – Redis

まとめ

公式ドキュメントには記載はないのですが、Redis::set()には追加の引数が存在し、期限を指定することができます。 通常の開発ではさほど気にする機会は少ないとは思いますが、パフォーマンスチューニングでRedisへのアクセス回数を節約したい場面では2回のアクセスを1回にまとめられるのは嬉しいですね。

TOPに戻る