DATABASES Signal 490
Shopify replaced Redis with MySQL for inventory reservations–and it scaled
Shopify migrated inventory reservations from Redis to MySQL using SKIP LOCKED and a one-row-per-unit design, achieving ACID consistency and hitting scale targets during peak traffic.
This demonstrates that MySQL can handle high-throughput reservation workloads previously thought to require Redis, eliminating the consistency gaps that come from splitting state across two data stores. For engineers operating dual-system architectures where atomicity is critical, this is a concrete pattern for consolidation.
Written by elseif from the cluster below · every claim links back to a sourceThe three things worth knowing
One row per sellable unit with SKIP LOCKED replaced Redis DECR/INCR, enabling ACID transactions between reservations and the inventory ledger.
A bounded pool of 1,000 available rows per item/location combination prevents the row-count explosion that would otherwise make the design unworkable at scale.
The hardest lesson was that the real bottleneck was not what the team initially observed and measured, though the specific discovery is not detailed in the available extract.
THE CLUSTER
↗