We replaced Redis with MySQL for inventory reservations—and it scaled (2026) - Shopify
shopify.engineering · 2,161 words · saved by 1 readers
How we used SKIP LOCKED, composite primary keys, and connection visibility to hit our scale targets.
During checkout, when a buyer clicks "Complete purchase," we need to guarantee the items they're buying are still available. If we get this wrong in one direction, two buyers purchase the same last unit: the merchant has to cancel an order, send an apology email, and eat the support cost. If we get it wrong in the other direction, we tell a buyer something is sold out when it isn't, and the merchant loses a sale they should have made. At Shopify's scale, either failure compounds fast. On Black Friday 2025, merchants on our platform hit a record $5.1 million in sales per minute at peak.…
saved by
related reading
- Redis High Availability: Sentinel, Replication, and Failover Guideredis.io
- Scaling Temporal: The basics | Temporaltemporal.io
- Everything I know about good system designseangoedecke.com
- Making 768 servers look like 1 — PlanetScaleplanetscale.com
- Scaling PostgreSQL to power 800 million ChatGPT users | OpenAIopenai.com
- Making Shopify’s Flagship App 20% Faster in 6 Weeks Using a Novel Caching Solution - Shopifyshopify.engineering
- Every query gets a receipt - The Consensustheconsensus.dev
- How to do distributed locking - Martin Kleppmann's blogmartin.kleppmann.com
- Database Sharding — PlanetScaleplanetscale.com
- DBMS Musings: It’s Time to Move on from Two Phase Commitdbmsmusings.blogspot.com
- Materialized views are obviously useful – Sophie Alpertsophiebits.com
- Let’s Handle 1 Million Requests per Second, It’s Scarier Than You Think!youtube.com