Working with Geospatial Indexes
1. Adding Geospatial Data
| Command | Description |
|---|---|
GEOADD key [NX|XX] [CH] lon lat member [...] | Stored as sorted set with geohash scores |
GEOADD shops -122.4194 37.7749 "sf" -73.9857 40.7484 "nyc"
2. Getting Member Position
| Command | Returns |
|---|---|
GEOPOS key m [m ...] | [lon, lat] arrays or nil |
3. Calculating Distance
| Command | Units |
|---|---|
GEODIST key m1 m2 [m|km|ft|mi] | Default m |
4. Getting Geohash
| Command | Returns |
|---|---|
GEOHASH key m [m ...] | 11-char geohash strings (standard) |
5. Searching by Radius
| Command | Description |
|---|---|
GEOSEARCH key FROMMEMBER m | FROMLONLAT lon lat BYRADIUS r unit [WITHCOORD] [WITHDIST] [COUNT n [ANY]] [ASC|DESC] | Unified search 6.2+ |
GEORADIUS / GEORADIUSBYMEMBER | DEPRECATED use GEOSEARCH |
6. Searching by Area
| Shape | Syntax |
|---|---|
| Box | BYBOX width height unit |
| Circle | BYRADIUS r unit |
Example: Nearest 10 shops within 5km
GEOSEARCH shops FROMLONLAT -122.4 37.77 BYRADIUS 5 km ASC COUNT 10 WITHCOORD WITHDIST
7. Storing Search Results
| Command | Description |
|---|---|
GEOSEARCHSTORE dst src ... [STOREDIST] | Persist results as sorted set |
8. Removing Geospatial Members
| Command | Notes |
|---|---|
ZREM key member | Geo keys are sorted sets; reuse ZSET commands |
9. Understanding Geospatial Precision
| Property | Value |
|---|---|
| Coordinate range | Lon ±180, Lat ±85.05112878 |
| Precision | ~0.5m worst case (52-bit geohash) |
10. Using Distance Units
| Unit | Suffix |
|---|---|
| Meters | m |
| Kilometers | km |
| Miles | mi |
| Feet | ft |