Agreed. Which is why the design doesn't make any sense. Because in the scenario presented they're starting a job during a transaction.
Personally, I need long running jobs.
e.g.,
1. Application starts transaction 2. Application updates DB state (business details) 3. Application enqueues job in Redis 4. Redis jobworkers pick up job 5. Redis jobworkers error out 6. Application commits transaction
This motivates placing the jobworker state in the same transaction whereas non-DB based job queues have issues like this.