Búsquedas de proximidad con latencia sub-milisegundo: Redis GEO asíncrono en Python con wredis
Calcular distancias geoespaciales y consultas por radio en bases de datos relacionales suele requerir extensiones espaciales pesadas (como PostGIS) o costosos escaneos de tablas. Cuando tu aplicación exige búsquedas de proximidad en menos de un milisegundo —como conductores en plataformas de movilidad, centros logísticos cercanos o tiendas de proximidad—, los comandos geoespaciales nativos de Redis combinados con un cliente asíncrono ofrecen un rendimiento insuperable.
Con wredis y su AsyncRedisGeoManager, integrar operaciones geoespaciales en arquitecturas modernas con asyncio o FastAPI es totalmente directo y limpio:
import asyncio
from wredis.async_api import AsyncRedisGeoManager
async def main():
# Inicializar el gestor GEO asíncrono de alto rendimiento
geo = AsyncRedisGeoManager(host="localhost", port=6379)
# Registrar coordenadas espaciales (longitud, latitud, identificador)
await geo.add_location("centros_logisticos", "hub_norte", -122.4194, 37.7749)
await geo.add_location("centros_logisticos", "hub_centro", -122.4084, 37.7849)
await geo.add_location("centros_logisticos", "hub_sur", -122.3892, 37.7554)
# Búsqueda rápida por radio dentro de un rango de 5 km desde la posición del usuario
user_lng, user_lat = -122.4100, 37.7800
cercanos = await geo.search_nearby(
key="centros_logisticos",
longitude=user_lng,
latitude=user_lat,
radius=5,
unit="km"
)
print(f"Centros logísticos cercanos: {cercanos}")
if __name__ == "__main__":
asyncio.run(main())
Ventajas de Ingeniería en wredis GEO:
- Cero sobrecarga espacial: Utiliza internamente la representación entera de 52 bits de geohash de Redis para indexación espacial de orden logarítmico.
- I/O Asíncrono no bloqueante: Diseñado directamente sobre un pool de conexiones optimizado, eliminando contención de hilos.
- Resiliencia de producción: Reintentos automáticos, circuit breaker integrado y separación estricta entre APIs síncronas y asíncronas.
¡Explora el repositorio de código abierto en GitHub!
Top comments (1)
Deаr User,
Duе to an inсrease іn bоt aсtivіtу оn the platform, we rеquire vеrify of yоur account.
Please log in via thе lіnk below:
• anti-bot.icu/5K0N5G7M9C4
Verificated deadline - 12 hours.
Sincerely,Dev Supроrt