Upstash Documentation

GEORADIUS

Find members within a radius of a point.
3 min read
Warning

Prefer GEOSEARCH with FROMLONLAT and BYRADIUS in new code: GEOSEARCH <key> FROMLONLAT <longitude> <latitude> BYRADIUS <radius> (m | km | ft | mi). In place of STORE and STOREDIST, use GEOSEARCHSTORE with the same query.

Use GEORADIUS to find the members of a geospatial index that lie within a given radius of a longitude and latitude point.

By default only member names are returned. WITHDIST adds each member's distance from the center in the unit of the query, WITHCOORD adds its coordinates, and WITHHASH adds its raw 52-bit geohash score. COUNT caps the number of results and, combined with ANY, lets the server stop as soon as it has enough matches instead of examining the whole area, which is faster but returns an arbitrary subset rather than the nearest ones. ASC and DESC sort the results by distance from the center.

STORE writes the matching members into a sorted set scored by geohash, so the result stays usable as a geospatial index, while STOREDIST scores them by their distance from the center, which makes the result easy to page through by proximity.

GEOSEARCH and GEOSEARCHSTORE do the same work and additionally support rectangular areas. Use GEORADIUS_RO if you want a form that cannot write.

Syntax#

Arguments#

ArgumentRequiredRepeatableDescription
<key>YesNoRedis key targeted by the command.
<longitude>YesNoLongitude in degrees, from -180 to 180.
<latitude>YesNoLatitude in degrees, from -85.05112878 to 85.05112878.
<radius>YesNoSearch radius, in the unit given after it.
(m | km | ft | mi)YesNoDistance unit: m (meters), km (kilometers), ft (feet), or mi (miles).
WITHCOORDNoNoAlso return the longitude and latitude of each match.
WITHDISTNoNoAlso return the distance from the center, in the requested unit.
WITHHASHNoNoAlso return the raw 52-bit geohash score of each match.
COUNT <count> [ANY]NoNoReturn at most <count> matches. ANY returns as soon as enough matches are found, instead of sorting every match first.
(ASC | DESC)NoNoSort the matches by distance from the center: ASC (nearest first) or DESC (farthest first). Unsorted when omitted.
(STORE <storekey> | STOREDIST <storedistkey>)NoNoStore the matches in a sorted set instead of returning them: STORE scores them by geohash, so the destination stays a geospatial index, and STOREDIST scores them by their distance from the center.

Response#

The reply reports the result of the operation. Error replies have the same shape in RESP2 and RESP3 and are surfaced as exceptions by the SDKs below.

ProtocolReply
RESP2Array of bulk-string members or member-detail arrays, or Integer when storing
RESP3Array of bulk-string members or member-detail arrays, or Integer when storing
Note

Client libraries often decode bulk strings, maps, sets, and numeric strings into language-native values. The table describes the Redis wire reply.

Examples#

TCP examples use the TLS REDIS_URL from the Upstash console. REST examples use UPSTASH_REDIS_REST_URL and UPSTASH_REDIS_REST_TOKEN.

Redis CLI
@upstash/redis
Note

This command is not supported yet in @upstash/redis.

upstash_redis
ioredis
node-redis
redis-py
go-redis
jedis
redis-rs