Datos básicosComercio electrónico

Ventas flash e inventario

Vende exactamente el stock que tienes cuando diez mil compradores hacen clic en Comprar en el mismo segundo, y mantén fuera a los bots.

descuento de stock
Atómico
unidades vendidas de más
0
reservas que se liberan solas
10 min
Paso 1 de 6
Carga el stock

Salen a la venta 500 unidades.

Sesión de ejemploplaying
# Carga el stock
hotkv> SET stock:sneaker-x 500
OK

Un recorrido animado con comandos reales de HotKV y respuestas de ejemplo. Haz clic en cualquier paso para saltar a él. Los comandos y las respuestas se quedan en inglés, tal como los escribes y los ves en HotKV.

El problema

En una venta flash, la base de datos de inventario es el cuello de botella justo cuando más importa. Las comprobaciones de leer y luego escribir venden de más con concurrencia, los carritos abandonados bloquean stock para siempre y los bots compran el stock antes de que los clientes reales terminen de cargar la página.

Cómo lo resuelve HotKV

El stock vive en un contador que se descuenta de forma atómica, así que los compradores concurrentes nunca pueden llevarse más de lo que existe. Cada reserva es una clave que caduca a los diez minutos, un límite de tasa por cliente frena a los bots y los pedidos confirmados van a un stream para que logística los procese a su propio ritmo.

Paso a paso

Qué ocurre, comando a comando

  1. 01

    Carga el stock

    Salen a la venta 500 unidades.

    SET stock:sneaker-x 500
  2. 02

    Mantén a raya a los bots

    Cada cliente puede intentarlo dos veces cada 10 segundos. Los bots lo superan de inmediato.

    GCRA.LIMIT buy:customer:881 10000 2
  3. 03

    Toma una unidad

    DECR es atómico. 10.000 clics simultáneos nunca pueden llevarse más de 500 unidades.

    DECR stock:sneaker-x
  4. 04

    Resérvala diez minutos

    La reserva caduca sola si se abandona el checkout, y un proceso de barrido devuelve la unidad.

    SET hold:sneaker-x:order-7781 customer:42 NX EX 600
  5. 05

    El agotado está resuelto

    Cuando DECR baja de cero, la unidad se devuelve y el comprador ve que está agotado. El stock nunca se queda en negativo mucho tiempo.

    INCR stock:sneaker-x
  6. 06

    Pasa los pedidos a logística

    Los pedidos pagados se añaden a un stream. El sistema del almacén los procesa a su propio ritmo.

    XADD orders * order 7781 sku sneaker-x customer 42
Dónde encaja

Escenarios reales

Lanzamientos de zapatillas y merchandising

Las ediciones limitadas se agotan en segundos sin vender de más ni un solo par.

Venta de entradas

Los asientos se reservan unos minutos durante el checkout y se liberan automáticamente si el comprador se va.

Reparto de comida y supermercado

Las franjas de entrega son contadores que se descuentan de forma atómica a medida que los clientes las reservan.

Integrado

Qué obtienes

Contadores atómicos

DECR e INCR cambian el stock en un solo paso, sin condiciones de carrera.

DECRINCRBY

Reservas que caducan

Las reservas son claves con un TTL.

SETNXEX

Protección contra bots

Límites por cliente con un tiempo de reintento exacto.

GCRA.LIMIT

Entrega de pedidos

Un stream para logística, con grupos de consumidores y confirmaciones.

XADDXREADGROUP

Preguntas frecuentes

¿Cómo devuelven stock las reservas caducadas?

Las reservas caducadas se pueden detectar con notificaciones del keyspace o con un barrido periódico, que vuelve a incrementar el contador de stock.

¿Puedo consultar el stock sin tomarlo?

Sí. GET devuelve el recuento actual. Solo DECR reserva.

¿Y los carritos con varios artículos?

Usa MULTI y EXEC, o una función, para descontar varios contadores a la vez.

Casos de uso relacionados

Pruébalo con tu propia carga de trabajo

HotKV habla el protocolo de Redis, así que puedes apuntar un cliente que ya usas hacia él y ejecutar estos mismos comandos.