Horizon and Redis Queues

Redis 2,763 keeps each queue as a list, with sorted sets for delayed and reserved jobs, and a worker can block for work (block_for) instead of polling. Laravel Horizon 4,175 (github.com/laravel/horizon (https://github.com/laravel/horizon 4,175 ), MIT) adds workers defined in config/horizon.php, auto-scaled per queue, and a /horizon dashboard of throughput and failures. Version 5.50.0 (22 September 2026) supports Laravel 9 2,157 to 13, needs the pcntl and posix extensions (so not native Windows) and works only with Redis, not Redis Cluster.

Installing and starting HorizonShell
composer require laravel/horizon
php artisan horizon:install
php artisan horizon

The generated supervisor-1 serves the default queue with balance auto, tries 1 and timeout 60, up to 3 processes locally and 10 in production. It drained nine jobs from a Redis 8.10.2 container, and horizon:terminate let the running job finish:

Output of 182
$ php artisan horizon:terminate
   INFO  Sending TERM signal to processes.  
  Process: 199345 ................................................ 0.07ms DONE

In production, supervise php artisan horizon in place of queue:work and deploy with horizon:terminate. Outside local, the viewHorizon gate guards the dashboard (Gates).