两种常用架构:
- 用于数据存储的 PostgreSQL
- Redis 用于协调后台作业队列(以及一些有限的原子操作)
BEGIN; WITH job AS ( SELECT id FROM jobs WHERE status = 'pending' LIMIT 1 FOR UPDATE SKIP LOCKED ) UPDATE jobs SET status = 'running' WHERE jobs.id = job.id RETURNING jobs.*; COMMIT; |
两种常用架构:
BEGIN; WITH job AS ( SELECT id FROM jobs WHERE status = 'pending' LIMIT 1 FOR UPDATE SKIP LOCKED ) UPDATE jobs SET status = 'running' WHERE jobs.id = job.id RETURNING jobs.*; COMMIT; |