[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回にまとめられるのは嬉しいですね。