1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Laravel: Redisにjobを任せるときのTips

Posted at

サーバーで重い処理を連続して行う際、Redisのqueueに突っ込んでバッチ処理させる時がたまにあります。
毎回queueとかredis-cliとか忘れるのでここにまとめます。

随時更新します。

queue:workerの起動

artisanコマンドでqueueに溜まったjobを実行できる。
--queue=で動かしたいqueueを指定しないと動かない。
--daemonはワーカーを常に起動しておくことで再起動によるCPU利用率を下げることができる。パフォーマンスが良い。
--timeoutは実行時間

$ php artisan queue:work --daemon --queue=mail,alert,default --tries=3 --timeout=0

ただ、jobのコードを変更した時などは変更の反映のために、ワーカーを再起動する必要がある。
ここらの処理はsupervisorを入れると自動で制御してくれる。

redis-cli

コマンドラインからRedisにアクセスできる。

$ redis-cli

jobの取得

Redisはkey-value型のNoSQLであるのでkeyを指定することで値を取得できる。

# keyを全て表示する
$ keys *
# 1) "hoge_id"
# 2) "Job\Hoge"

# keyの型を知ることができる
$ type hoge_id    # string
$ type "Job\Hoge" # hash

# 値を取得。型によって取得コマンドが違う。
$ get hoge_id        # 1
$ hgetall "Job\Hoge"
# 1) "throughput"
# 2) "52"
# 3) "runtime"
# 4) "100.0101"

jobの削除

特定のqueueやjobのデータを消したい時

$ del <消したいqueueの名前>

全てのデータを削除したい時。
*ログイン情報など重要なキャッシュも消してしまうので使う際には注意が必要。

$ flushdb

jobの作成方法

Laravel側でdispatch()してあげれば良い。HogeJobのhandler()が呼び出されます。

dispatch((new Job\HogeJob())->onQueue('Hoge'));

コマンド参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?