You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中使用Redis的GEOADD命令?

解决Redis GEOADD报错:"GEOADD allows either 'nx' or 'xx', not both"

错误原因

问题出在redis-py版本兼容性导致的参数解析错误:

  • redis-py 4.x及以上版本对geoadd的API做了调整,要求将地理坐标和成员打包成元组列表传递;
  • 你仍使用旧版本(3.x及以下)的调用方式,导致参数错位:纬度值被误识别为nx参数、成员名被误识别为xx参数,这两个参数非空/非零会被视为True,触发了Redis的参数校验规则。

解决方案

方案1:适配redis-py 4.x+版本的写法

将坐标和成员封装成元组列表传递给geoadd:

from redis import Redis

redis_con = Redis(host="localhost", port=6379)
# 用列表包裹元组,每个元组格式为(经度, 纬度, 成员名)
redis_con.geoadd("Sicily", [(13.361389, 38.115556, "Palermo")])

方案2:降级redis-py到3.x版本

如果想继续使用旧的调用方式,执行以下命令降级:

pip install redis==3.5.3

内容的提问来源于stack exchange,提问作者Tugrul Gokce

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 21:45:28