redis.exceptions.DataError: GEOADD allows either 'nx' or 'xx', not both
时间: 2024-12-21 07:24:20 浏览: 6
解决报错-org.springframework.data.redis.serializer.SerializationExce
Redis `GEOADD` 是一个地理空间命令,用于在地理位置集合(GeoSet)中添加新的点。当你尝试使用 `GEOADD` 添加新点时,可能会遇到 `DataError` 错误,提示 "GEOADD allows either 'nx' or 'xx', not both",这是因为该命令接受两个可选的标志 `nx` 和 `xx`。
- `nx` (not exists):如果指定的坐标已经存在于集合中,那么不会添加新点,忽略该操作。
- `xx` (exists): 如果指定的坐标已经存在于集合中,那么会更新该点的额外信息(如附加的标签等),而不是像 `nx` 那样完全忽略。
错误的原因是你在调用 `GEOADD` 时同时指定了 `nx` 和 `xx`,这在 Redis 规则中是不允许的,因为它们代表互斥的行为。你需要选择其中一个,要么确保坐标不存在再添加 (`nx`),要么允许更新已存在的坐标 (`xx`)。
正确的调用示例可能是这样的:
```python
# 如果只想在坐标不存在时添加
GEOADD myset 51.5074 -0.1278 some_point nx
# 如果想在坐标存在时更新
GEOADD myset 51.5074 -0.1278 some_point xx
```
阅读全文