Halloween DealsAmazon USHalloween week deals: useful picks before month-endAmazon US: current deals, useful picks and tech finds.Check DealsWindows FixRecommendedWindows errors stealing your time? Find the fix fastScan stability, cleanup and performance issues.Fix NowHalloween DealsAmazon USOctober picks are moving - compare before checkoutAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
World desk6 min

Búsquedas de proximidad con Redis GEO y Python asíncrono: cómo medir la latencia

Redis GEO y redis.asyncio permiten buscar puntos cercanos sin bloquear el bucle de eventos. La latencia sub-milisegundo depende de la carga, la red y la medición.
Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Redis GEO permite cargar ubicaciones con GEOADD y buscar puntos cercanos con GEOSEARCH; en Python, redis.asyncio permite esperar esas operaciones sin bloquear el bucle de eventos. Una respuesta por debajo de un milisegundo puede ser un objetivo en una instalación concreta, pero no es una garantía de Redis ni de un cliente Python. Además, no está establecido qué paquete o API designa “wredis”; el ejemplo usa explícitamente el cliente oficial redis-py.

Qué resuelve Redis GEO y qué no garantiza

El tipo geoespacial de Redis está pensado para almacenar miembros asociados a coordenadas y consultar puntos dentro de un área circular o rectangular. Para ubicaciones terrestres, se introducen longitud y latitud; en los comandos Redis el orden es longitude latitude. Las interfaces de otros sistemas pueden usar un orden distinto, así que conviene confirmar el contrato de cada API en los límites de la aplicación.

As an Amazon Associate I earn from qualifying purchases.

Redis documenta GEOADD con complejidad O(log(N)) por elemento y GEODIST con complejidad O(1); la guía de datos geoespaciales muestra el patrón para cargar y consultar ubicaciones. GEOSEARCH, disponible desde Redis 6.2.0, busca miembros del índice dentro del área indicada. Su complejidad documentada es O(N+log(M)), donde N representa los elementos en el área alineada con la cuadrícula y M el número total de elementos del índice. Es una descripción algorítmica, no una promesa de tiempo de respuesta.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Usar GEOADD y GEOSEARCH desde Python async

La API asíncrona oficial de redis-py está en redis.asyncio. Se usa await en cada operación de Redis. En este ejemplo, r es un cliente asíncrono y las coordenadas se expresan en el orden que espera Redis:

import redis.asyncio as redis

r = redis.Redis(host="localhost", port=6379, decode_responses=True)

async def add_location(member: str, longitude: float, latitude: float):
    return await r.geoadd("places", {member: (longitude, latitude)})

async def nearby(longitude: float, latitude: float, radius_m: float):
    return await r.geosearch(
        "places",
        longitude=longitude,
        latitude=latitude,
        radius=radius_m,
        unit="m",
        sort="ASC",
        count=20,
        withdist=True,
        withcoord=True,
    )

# Al terminar la vida útil del cliente:
await r.aclose()

La firma exacta y los valores de retorno dependen de la versión de redis-py instalada; consulta la documentación correspondiente a esa versión antes de integrar el fragmento. La referencia de GEOSEARCH detalla sus opciones: origen por miembro (FROMMEMBER) o coordenadas (FROMLONLAT), área circular (BYRADIUS) o caja (BYBOX), unidades, orden, límite de resultados, ANY y campos opcionales como distancia, coordenadas y hash geográfico.

Elegir el área y las opciones de salida

  • Usa un radio cuando la pregunta sea “qué puntos están a esta distancia o menos”; una caja resulta útil cuando el área se define por anchura y altura.
  • Solicita WITHDIST, WITHCOORD o WITHHASH solo si la aplicación necesita esos datos; pedir más campos afecta tanto a la respuesta como al procesamiento posterior.
  • COUNT limita cuántos resultados se devuelven. Al combinarlo con ANY, Redis puede detenerse al encontrar suficientes miembros, en vez de buscar necesariamente los más cercanos. Si se requiere orden exacto por distancia, solicita orden ascendente y no trates ANY como equivalente.

Validar antes de atribuir problemas a latencia

  • Comprueba el sistema de coordenadas de entrada y el orden longitud-latitud esperado por Redis.
  • Valida unidades y radio frente a la escala real del caso de uso.
  • Decide cómo manejar coordenadas ausentes, miembros duplicados y ubicaciones obsoletas; esos defectos pueden parecer errores de proximidad aunque el comando se ejecute rápidamente.

Qué significa realmente “asíncrono”

Esperar comandos con await permite que el bucle de eventos atienda otras tareas mientras la operación de Redis está pendiente. No vuelve más rápida una consulta individual por sí solo ni aumenta la capacidad de procesamiento del servidor. Ejecutar varias llamadas independientes con asyncio.gather() puede elevar el throughput, pero también aumenta la demanda de conexiones y la contención; no reduce necesariamente la latencia de una sola búsqueda.

La documentación oficial de operaciones asíncronas con redis-py permite compartir la instancia del cliente entre tareas: las conexiones se gestionan mediante un pool. El tamaño del pool debe corresponderse con la concurrencia que se espera sostener. Si se usa single_connection_client=True, las operaciones se serializan sobre una sola conexión. Los pipelines y objetos Pub/Sub con estado no deben compartirse entre tareas; cada tarea debe crear los suyos. Cierra el cliente de vida larga con await r.aclose() al terminar. Si se cancela un comando a mitad de una operación, redis-py puede desconectar la conexión afectada para evitar desalinear solicitudes y respuestas.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Cómo medir si una búsqueda queda por debajo de 1 ms

Separa el tiempo de procesamiento del comando en Redis del tiempo de ida y vuelta observado por la aplicación. Este último puede incluir red, planificación del sistema, serialización y el trabajo de la propia aplicación. Redis advierte que una secuencia de viajes repetidos al servidor añade latencia incluso cuando los comandos individuales se procesan muy rápido. La guía oficial de diagnóstico de latencia cita alrededor de 200 μs para una red típica de 1 Gbit/s y hasta 30 μs usando un socket Unix; ambas cifras dependen del hardware y del sistema, y no son garantías para una instalación determinada.

Para probar tu objetivo, mide la operación desde el punto de vista relevante para el usuario o servicio y registra, como mínimo:

  • Versiones exactas de Python, redis-py, Redis y el sistema operativo.
  • Ubicación de los procesos y tipo de conexión —TCP o socket Unix—, además de la topología de red relevante.
  • Tamaño y distribución del índice geoespacial, forma y radio o dimensiones de cada búsqueda.
  • Opciones de orden y salida, límite de resultados, nivel de concurrencia y estado de calentamiento o caché.
  • Percentiles como p50, p95 y p99, duración y metodología de la prueba, y si el cronómetro incluye serialización, red y procesamiento de la aplicación.

Los resultados publicados por Redis ilustran por qué no se debe trasladar una cifra de un benchmark a otra carga: en un caso específico GEOSEARCH BYBOX con 60 millones de elementos, Redis informó una latencia p50 con RTT de 605.739 ms en Redis 7.0.5 y 161.791 ms en Redis 7.0.7. Son mediciones de ese caso y esas versiones, no resultados de wredis ni una predicción para un índice más pequeño. El artículo de Redis sobre comandos geográficos en Redis 7 describe el contexto del benchmark.

Para reducir viajes repetidos cuando el trabajo lo permita, agrupa comandos con pipelines o usa comandos agregados. Un pipeline reduce el coste de muchos viajes de ida y vuelta; no equivale a acelerar necesariamente una consulta geográfica individual.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Cuándo basta GEO y cuándo considerar Redis Search

Para puntos y búsquedas sencillas por distancia, el tipo GEO es el ajuste directo. Si necesitas consultar formas o polígonos y relaciones espaciales como WITHIN, CONTAINS, INTERSECTS o DISJOINT, Redis Search ofrece campos geoespaciales GEO y GEOSHAPE. Su aproximación esférica no es adecuada cuando se necesita precisión geográfica extrema; consulta la documentación de geoespacialidad en Redis Search para sus capacidades y límites.

Qué se puede afirmar sobre wredis

“wredis” no identifica de forma verificable, con la información disponible aquí, un paquete concreto, su versión, su API, su mantenimiento o su compatibilidad con los comandos GEO. Por eso, el código de este artículo usa redis.asyncio, no wredis. Antes de sustituir el cliente, confirma el proyecto previsto y consulta su documentación oficial; no des por supuesta la misma sintaxis ni el soporte de GEOADD y GEOSEARCH.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More from the Wire

  1. World desk4 min
    How to Spot an AI Voice Scam Before Sending MoneyDon’t rely on how a caller sounds. Pause, call back through a known number, and verify the emergency with another trusted person before sending money.
  2. Mountain View desk4 min
    Google’s SynthID Detector: How to Check AI-Generated Images, Video and AudioGoogle’s SynthID Detector looks for an embedded watermark in supported images, video and audio. Here is what its results do—and do not—show.
  3. Redmond desk20 min
    How to create a link to File or Folder in Windows 11Windows 11 gives you several ways to point to a file or folder without moving or duplicating it. You can create a desktop shortcut,…
Recommended PC Tool
Recommended PC Tool
PC Slower Than It Used to Be?Free scan - under a minute
Outdated Drivers Are Slowing You DownFree scan - exact matches

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.