Два подхода: хранить в Redis (быстро, но теряется при падении) или в PostgreSQL (надёжно). Структура: cart_id, user_id, items с product_id, quantity, price. При добавлении — проверяй наличие товара. При checkout — лочь товары, проверяй остатки, создавай заказ в транзакции. Цену фиксируй при checkout, не при добавлении в корзину.