如何高效利用GEORADIUS在Redis Geo中查找特定地点附近的人?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1078个文字,预计阅读时间需要5分钟。
GEORADIUS 返回空间结果?八成是经纬度顺序写反了——经度在前,纬度在后,和高度/百度地图 API 相反。
为什么 GEORADIUS 总是返回空数组
Redis 的 GEORADIUS 不会报错,但静默返回空数组,最常见原因是坐标存入时顺序颠倒。它严格要求「经度(longitude)在前、纬度(latitude)在后」,而多数前端地图 SDK(如高德、百度、Leaflet)默认传参是「纬度在前、经度在后」。
- 正确写法:
GEOADD users 116.48 39.92 "uid:1001"(北京朝阳区附近) - 错误写法:
GEOADD users 39.92 116.48 "uid:1001"(坐标落到南大西洋,接近南极) - 用
GEOPOS users "uid:1001"验证:返回值若为[39.92, 116.48],说明你存错了——Redis 存的是[经度, 纬度],但返回格式固定为[经度, 纬度],别被表象骗了 - 单位未显式指定也会失败:写
GEORADIUS users 116.48 39.92 500会报ERR wrong number of arguments for 'georadius' command,必须带单位,如500 m
GEORADIUS 查出来的结果为什么不是由近到远
默认不排序。
本文共计1078个文字,预计阅读时间需要5分钟。
GEORADIUS 返回空间结果?八成是经纬度顺序写反了——经度在前,纬度在后,和高度/百度地图 API 相反。
为什么 GEORADIUS 总是返回空数组
Redis 的 GEORADIUS 不会报错,但静默返回空数组,最常见原因是坐标存入时顺序颠倒。它严格要求「经度(longitude)在前、纬度(latitude)在后」,而多数前端地图 SDK(如高德、百度、Leaflet)默认传参是「纬度在前、经度在后」。
- 正确写法:
GEOADD users 116.48 39.92 "uid:1001"(北京朝阳区附近) - 错误写法:
GEOADD users 39.92 116.48 "uid:1001"(坐标落到南大西洋,接近南极) - 用
GEOPOS users "uid:1001"验证:返回值若为[39.92, 116.48],说明你存错了——Redis 存的是[经度, 纬度],但返回格式固定为[经度, 纬度],别被表象骗了 - 单位未显式指定也会失败:写
GEORADIUS users 116.48 39.92 500会报ERR wrong number of arguments for 'georadius' command,必须带单位,如500 m
GEORADIUS 查出来的结果为什么不是由近到远
默认不排序。

