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助手,依托大模型,帮助用户记录、整理和分析音视频内容,体验用大模型做音视频笔记、整理会议记录。

相关推荐
兵慌码乱4 小时前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构
hboot5 小时前
AI工程师第三课 - 机器学习基础
python·scikit-learn·kaggle
顾林海10 小时前
Agent入门阶段-编程基础-Python:流程控制
python·agent·ai编程
呱呱复呱呱13 小时前
Django CBV 源码解读:一个请求是怎么找到你的 get() 方法的
python·django
Nturmoils14 小时前
订单列表慢查询,先看 WHERE、ORDER BY 和 LIMIT
数据库
曲幽17 小时前
刚部署的 LibreTranslate 频频翻车?我掏出了 20 年前的 StarDict 词典,用 FastAPI 搭了个本地词典翻译 API
python·fastapi·web·translate·goldendict·libretranslate·stardict·pystardict
渣波18 小时前
拒绝 SQL 焦虑!手把手带你用 NestJS + Prisma + DTO 写出“防弹”级后端代码
javascript·数据库·后端
荣码18 小时前
用Streamlit给AI应用套个界面,10行代码出Web页面
java·python
兵慌码乱1 天前
基于Python+PyQt5+SQLite的药房管理系统实现:事务一致性与界面解耦全流程解析
python·sqlite·信号与槽·pyqt5·数据库设计·桌面应用开发·事务处理
金銀銅鐵1 天前
[Python] 体验用欧几里得算法计算最大公约数的过程
python·数学