Shopify Replaced Redis with MySQL for Inventory Reservations
Original: Shopify replaced Redis with MySQL for inventory reservations–and it scaled
Why This Matters
Demonstrates that MySQL can replace Redis for high-frequency transactional workloads at massive e-commerce scale.
Shopify migrated its inventory reservation system from Redis to MySQL, successfully handling peak traffic of $5.1 million in sales per minute on Black Friday 2025. The new system uses MySQL 8's SKIP LOCKED feature and a one-row-per-unit design to prevent overselling at scale.
Shopify's engineering team has published details on how they replaced Redis with MySQL for their inventory reservation system—a critical component that prevents two customers from purchasing the same last unit during checkout. During Black Friday 2025, Shopify merchants hit a record $5.1 million in sales per minute at peak, with every transaction touching inventory.
The system has two core operations: Reserve (a short-duration hold placed when payment begins) and Claim (a permanent deduction when payment succeeds). Previous MySQL attempts had failed due to row-level contention on a single quantity column. The breakthrough came from MySQL 8's SKIP LOCKED feature, which enabled a redesign using one row per inventory unit rather than one row per item—a pattern inspired by 37signals' database-backed load distribution work.
The team also leveraged composite primary keys and connection visibility controls to reach their high-throughput targets. Shopify noted that the most important lesson learned wasn't about database design itself, but about identifying the true bottleneck, which turned out to be different from what their monitoring had initially indicated. The migration is part of Shopify's broader push toward a unified database strategy.