Blog
How real-time dispatch systems work
If you're building anything that assigns drivers to riders, technicians to service calls, or responders to 911 calls, the architecture behind that assignment decision separates a smooth operation from one that falls apart during the lunch rush. When the data your system acts on is even a few minutes stale, assignments go to the wrong resource, ETAs drift, and customers or dispatchers start compensating manually.
This guide covers what a real-time dispatch system is, why legacy approaches can't keep up, how modern dispatch architectures work under the hood, and where a real-time data layer fits into the stack.
What is a real-time dispatch system?
A real-time dispatch system is a software architecture that ingests state-change events (GPS pings, new job requests, availability updates) and turns them into assignments with sub-second to low-second latency. Instead of scheduled batch runs or manual intervention, decisions happen continuously as events arrive.
The difference between dispatch approaches comes down to how fresh the data is at decision time. Manual dispatch works off assumptions and planned positions. Batch dispatch works off periodic snapshots that may already be outdated. Real-time dispatch works off data that's only seconds old, which means the system's view of the world is closer to the actual state when the assignment is made. In practice, "real-time" can mean purely continuous stream processing or short micro-batch cycles that run every few seconds per region. Either way, decision state stays fresh enough that the system isn't acting on stale information.
Why traditional dispatch breaks under modern demands
Stale data is only one part of the problem. Older dispatch systems were built for predictable, lower-volume, human-paced operations, and the failure modes go deeper than outdated snapshots.
- Latency floors. Batch cycles and manual reviews create a minimum decision delay that modern operations can't absorb.
- Static plans. Legacy systems generate routes at a fixed point in time and may not reoptimize when conditions shift mid-operation.
- Simple heuristics that don't scale. Dispatching the nearest unit or following fixed routes works at low volume, but these methods struggle to model larger assignment problems. In emergency medical services (EMS), the stakes are especially high when response time is part of the outcome.
Every one of these is a structural limit, not an operational hiccup you can fix with better tooling on top of the same architecture.

Get started with Redis for faster apps
Reduce latency and handle data in real time.How a real-time dispatch system works
Those bottlenecks point to what a modern system needs next: a layered pipeline with clear jobs and tight timing at each layer. Under the hood, each layer has its own role and latency budget.
Event ingestion
The first layer handles incoming state changes. At large scale, that can mean persistent connections from mobile clients pushing GPS pings and job requests rather than polling-based approaches, where inefficiency rises as connection counts and update frequency increase. Events are then validated, enriched with metadata, and forwarded to a streaming pipeline partitioned by entity key, such as driver ID, order ID, or geographic region.
Streaming pipeline
The streaming layer turns raw events into actionable state. Each incoming GPS ping implicitly asks whether a driver moved into or out of a relevant geospatial zone. The core challenge is that arriving data can act like a complex query against the existing database. Stream processors evaluate those continuous queries against a stateful, windowed view of the world rather than point-in-time snapshots.
Geospatial indexing
Finding all available drivers near a point can turn into an expensive scan if the system has to check every driver record. Geospatial indexing can reduce that to a bounded lookup, which matters because proximity search sits directly on the assignment hot path.
Matching & optimization engine
This is the decision layer, and it's more complex than assigning the nearest driver. In large systems, matching is often treated as a broader assignment problem rather than a nearest-neighbor lookup, with factors like vehicle type, accessibility, pooling eligibility, and system-wide efficiency.
Pub/sub notification
Once the matching engine makes a decision, assignments need to reach field agents fast. Pub/sub messaging supports this by decoupling the publisher (the matching engine) from subscribers (the mobile clients waiting for assignments). The matching engine publishes to a channel or topic, and only connected clients subscribed to that topic receive the message. The publisher doesn't need to track individual connections.
Low-latency state store
The final hot path is the in-memory state store, which holds active driver availability, current coordinates, and trip status. This data changes frequently, gets read frequently, and loses value quickly. In dispatch architectures like the ones discussed here, in-memory state and indexing can help keep hot-path reads and writes within tight latency budgets.
Core capabilities every real-time dispatch system should include
With the pipeline layers defined, the capabilities each layer needs to support become clearer. Not every dispatch system needs all of these, but they show up repeatedly across logistics, ride-hailing, emergency services, and field service management.
- Geospatial tracking & location intelligence. Continuous awareness of where agents and vehicles are is the foundation. Without it, assignment logic, routing, and estimated times of arrival (ETAs) all degrade.
- Dynamic routing & rerouting. Routes need to update as live conditions change: traffic, cancellations, new jobs.
- Automated assignment & optimization. Manual assignment works at small scale, but it becomes a bottleneck as fleets and job volume grow.
- Real-time ETA calculation. Predictive ETAs combine live and historical data rather than relying only on self-reported estimates from the field.
- Constraint-aware scheduling. Vehicle capacity, driver hours-of-service limits, delivery windows, and technician skill requirements all shape what's actually feasible. Plans that ignore hard constraints may look efficient on paper but fall apart in operations.
- Fault tolerance & high availability. Dispatch is operational infrastructure that needs to stay up. In emergency services, even partial failures in tracking or alerting functions can create safety gaps. Decoupling ingestion, storage, and computation at the system level supports scaling and resilience.
These capabilities work as a system, not as isolated features. The geospatial layer feeds the matching engine, the matching engine triggers notifications, and the state store supports everything underneath. The platform connecting them often determines whether the pipeline can stay within its latency budget.
Build faster with Redis Cloud
Get Redis up and running in minutes, then scale as you grow.Industry examples: how real-time dispatch looks in practice
The same architecture shows up differently by industry, but the core pattern stays consistent: ingest fresh state, run assignment logic, and push decisions to the field.
Ride-hailing
Ride-hailing matches riders to drivers inside decision windows that last a few seconds. The system ingests a ride request, queries available drivers within a geofenced radius, scores candidates on proximity, ETA, and vehicle type, then pushes the assignment to a driver who has a short window to accept or decline. If the driver declines or doesn't respond, the system immediately re-runs the match with updated availability. During peak demand, this cycle runs continuously across overlapping geographic zones.
Logistics
Last-mile delivery and fleet logistics re-optimize routes mid-shift as conditions change. A driver picks up a package, and a new high-priority order enters the queue three stops into the route. The dispatch system recalculates the remaining sequence, factoring in delivery windows, vehicle capacity, and real-time traffic. Static route plans generated at the start of a shift can't account for cancellations, late additions, or road closures that happen after drivers are already moving.
Emergency services
In emergency services, the dispatch architecture is known as computer-aided dispatch (CAD). When a 911 call comes in, the system identifies available units, evaluates proximity and response capability, and assigns the closest qualified responder. The National Highway Traffic Safety Administration (NHTSA) describes how greater CAD interoperability across jurisdictions can improve mutual aid coordination and reduce response times. Seconds of delay in this pipeline directly affect outcomes.
Field service
Field service dispatch assigns technicians to repair tickets, installations, and inspections throughout the day. The difference from logistics is that job duration is less predictable: a repair estimated at 30 minutes can run to two hours. Real-time dispatch systems handle this by delaying assignment of later jobs until the current one is closer to completion, then reshuffling the remaining queue based on updated technician locations and time windows.
The data platform layer
Every layer of the dispatch pipeline depends on a data layer that can handle high-frequency writes, low-latency reads, geospatial queries, and event-driven messaging at the same time. Redis provides all of these in one platform: geospatial indexes, pub/sub messaging, streams, and native data structures for state management.
For position tracking, Redis' GEOADD command stores coordinates as geohash scores in a sorted set, updating an existing member's score in O(log N) time. Each GPS ping overwrites the previous position for that driver. The GEOSEARCH command handles proximity queries with circular or rectangular search areas and returns results sorted by distance.
For event delivery and assignment coordination, Redis provides two messaging patterns. Pub/sub broadcasts to all current subscribers with at-most-once delivery—if a subscriber is disconnected, that message is lost. Streams support durable, consumer-group-based delivery where each message stays in a pending entries list until acknowledged, which fits assignment events that need to survive a consumer disconnect. For preventing double-assignment, the WATCH/MULTI/EXEC pattern provides optimistic concurrency control in low-contention scenarios, while server-side Lua scripts handle high-contention hot paths atomically without retries.
In one benchmark on a 20-node Amazon Web Services (AWS) cluster, enterprise-grade Redis reported over 100 million operations per second at sub-millisecond latency, and over 200 million operations per second on a 40-node cluster. These numbers reflect a specific hardware configuration, pipelining depth, and workload mix, so throughput and latency should be validated against your own workload.
Real-time dispatch runs on real-time data
Dispatch optimization is as much a data infrastructure problem as an algorithm problem. The matching logic matters, but it can only work with the data it can read and the speed of the store behind it. When one layer adds delay, the system's view of the world drifts from reality, and dispatch quality drops.
Instead of stitching together a cache, a spatial database, a message broker, and a state store, Redis provides one platform aligned to the access patterns dispatch demands.
Try Redis free to test geospatial queries and pub/sub against your dispatch workload, or talk with us about building real-time dispatch infrastructure at scale.
Now see how this runs in Redis
Use Redis to power real-time data, retrieval, and caching at scale.Get started with Redis today
Speak to a Redis expert and learn more about enterprise-grade Redis today.
