Shopify 用 MySQL 替代 Redis 实现库存扩展
Shopify replaced Redis with MySQL for inventory reservations–and it scaled

在 Shopify 的规模下,库存超卖或误报缺货都会带来巨大损失。过去我们依赖 Redis 处理库存预留,但数据分散导致无法保证 ACID 一致性。2025 年黑五高峰期,我们成功将系统迁移至 MySQL,利用 MySQL 8 的 SKIP LOCKED 特性,采用“每单位一行”的设计,结合有界池化策略,实现了高并发下的精准库存控制。真正的瓶颈并非数据库性能,而是连接数耗尽。通过优化事务隔离级别、统一锁顺序及清理冗余查询,我们最终在保持正确性的同时实现了规模化扩展。
最艰难的一课并非关于数据库设计,而是发现真正的瓶颈并非我们观测和测量的对象。