1. 增加地理位置信息
- geoadd
longitude、latitude、member分别是该地理位置的经度、纬度、成员
127.0.0.1:6379> geoadd cities:locations 116.28 39.55 beijing
(integer) 1
2. 获取地理位置信息
- geopos
127.0.0.1:6379> geopos cities:locations tianjin
1) 1) "117.12000042200088501"
2) "39.0800000535766543"
3. 获取两个地理位置的距离
- geodist
127.0.0.1:6379> geodist cities:locations tianjin beijing km
"89.2061"
4. 获取指定位置范围内的地理信息位置集合
- georadius
- georadiusbymember
georadius 和 georadiusbymember 两个命令的作用是一样的, 都是以一个地理位置为中心算出指定半径内的其他地理信息位置, 不同的是 georadius 命令的中心位置给出了具体的经纬度, georadiusbymember 只需给出成员即可。
127.0.0.1:6379> georadiusbymember cities:locations beijing 150 km
1) "beijing"
2) "tianjin"
3) "tangshan"
4) "baoding"
5. 获取 geohash
将二维经纬度转换为一维字符串
- geohash
特点:
- GEO 的数据类型为 zset, Redis 将所有地理位置信息的 geohash 存放在 zset 中
字符串越长, 表示的位置更精确
表3-8 geohash 长度与精度对应关系<br />![image.png](https://cdn.nlark.com/yuque/0/2020/png/663581/1606803388735-e880b91d-d04e-4f9e-b6c0-b353959b2bae.png#align=left&display=inline&height=452&margin=%5Bobject%20Object%5D&name=image.png&originHeight=512&originWidth=580&size=71053&status=done&style=none&width=512)
两个字符串越相似, 它们之间的距离越近, Redis 利用字符串前缀匹配算法实现相关的命令
- geohash 编码和经纬度是可以相互转换的
6. 删除地理位置信息
- zrem