Redis如何查询附近的人_利用GEORADIUS指令进行Geo范围搜索

GEORADIUS 返回空结果通常因坐标顺序错误,必须经度在前、纬度在后;默认不排序,需加ASC/DESC;单位必须显式指定;同一member重复GEOADD会覆盖旧坐标。GEORADIUS 返回空结果?先检查坐标存入格式是否正确Redis 的 GEORADIUS 不会报错,但返回空数组时,八成是数据没存对------它只接受「经度在前、纬度在后」的顺序,和常见地图 API(如高德、百度)的「纬度在前、经度在后」相反。用 GEOADD 存位置时,必须写成 GEOADD users 116.48 39.92 "uid:1001"(经度 116.48,纬度 39.92)如果误写为 GEOADD users 39.92 116.48 "uid:1001",坐标就飞到南极附近,GEORADIUS 自然查不到可用 GEOPOS 验证:执行 GEOPOS users "uid:1001",看返回的经纬度是否落在合理地理范围内GEORADIUS 查询结果乱序?默认不按距离排序默认情况下,GEORADIUS 返回的是无序集合,不是按"由近到远"排好的。你看到的顺序取决于 Redis 内部哈希桶遍历逻辑,不能依赖。加 ASC 参数才能升序(最近的在前):GEORADIUS users 116.48 39.92 5 km ASC加 DESC 才降序(最远的在前)不带 ASC/DESC 时,即使加了 WITHDIST,距离字段也和元素一一对应,但元素本身不排序如果业务需要分页(比如"加载下一页"),别用 count + 偏移,而应结合 STORE 或 STOREDIST 缓存结果再切片,否则多次查询可能因并发写入导致结果漂移查不到 500 米内的人?注意单位和精度限制GEORADIUS 的距离单位只有 m(米)、km、mi(英里)、ft(英尺)四种,没有 cm 或 nm;而且 Redis Geo 使用的是 Geohash,5 位精度约 2.4km,7 位才到约 19m------它天生不适合亚米级场景。 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手,依托大模型,帮助用户记录、整理和分析音视频内容,体验用大模型做音视频笔记、整理会议记录。

相关推荐
李兆龙的博客11 小时前
问津集 #26:Lakebase——Postgres 的版本化页面存储、数据库分支与计算弹性
数据库
数字融合11 小时前
透明化视频三维矿山井下照明重建技术
人工智能·python·数码相机
yi01111 小时前
LeetCode 219:存在重复元素 II——哈希表记录“最近一次出现的位置”
数据结构·人工智能·笔记·python·算法·leetcode·哈希表
Marst Code12 小时前
上位机开发日记 · 第 2 篇 · 架构先行:六层分层与边界
python
倔强的石头_13 小时前
聊聊金仓KFS:一款把数据同步软件做扎实的产品
数据库
闲云野鹤在人间13 小时前
MySQL|从理论、安装、备份到主从复制、MHA高可用详解
linux·运维·数据库·mysql·云计算
禾小西13 小时前
Redis:从两大维度和三大主线建立知识体系
数据库·redis·缓存
李日华大战鸡红13 小时前
FOC状态空间方程模型推导(学习记录)
python·学习·线性代数
禾小西14 小时前
Redis 数据结构:快速的 Redis 有哪些慢操作?
数据结构·数据库·redis
数据库小学妹14 小时前
数据共享交换平台选型:交换方式对比与避坑指南
数据库·信创·数据同步·数据交换平台·政务数据共享·数据共享交换平台·数据库底座