GEOPOS 查不到数据主因是 GEOADD 未成功参数顺序错误须经度在前、成员名不一致、或 pipeline/事务中未等命令执行完返回值为二维数组含字符串型经纬度及 null需显式转换且验证存在性。用 GEOPOS 读取门店坐标前先确认它真在 Geo 集合里直接调 GEOPOS 却返回 nil 或空数组大概率是门店名根本没成功加进 Geo 集合。Redis 的 Geo 命令不报错也不提示“不存在”只默默返回空——这是最常踩的坑。GEOADD 必须严格按 经度 纬度 成员名 顺序传参反了会导致坐标错乱比如把北京存成南美洲成员名如门店 ID必须和后续 GEOPOS 查询时用的完全一致大小写、空格、下划线都不能差用 EXISTS 检查 key 是否存在不够得用 ZCARD 看集合里有没有元素ZCARD store:geoGEOPOS 返回的数组结构怎么解析才不翻车它返回的是二维数组每个门店对应一个子数组子数组里是 [经度, 纬度] 字符串。别直接当浮点数用也别假设一定有值。如果查询多个门店GEOPOS store:geo shop_001 shop_002结果是 [[116.48,39.92], null] 这种混合类型——第二个 null 表示 shop_002 不在集合中经度纬度都是字符串需要显式转 float否则做距离计算会出错比如 Python 里 116.48 39.92 是拼接不是相加精度默认是小数点后 7 位够用但别误以为是高精度坐标如果业务要求更高得自己存原始 double 值到 Hash 里为什么 GEOPOS 查不到刚 GEOADD 的数据检查事务和管道在 pipeline 或 transaction 里执行 GEOADD 后立刻 GEOPOS可能查不到——命令没真正落地。 Trenz AI驱动的社交电商营销平台专为TikTok Shop设计