用途
Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增。
geoadd
GEOADD key longitude latitude member [longitude latitude member ...]
geoadd 用于存储指定的地理空间位置,可以将一个或多个经度(longitude)、纬度(latitude)、位置名称(member)添加到指定的 key 中。
返回结果
添加的条数
127.0.0.1:6379> GEOADD geo1 108.953364 34.276423 xian 109.502912 36.648447 yanan 107.25837 34.35628 baoji
(integer) 3
geopos
GEOPOS key member [member ...]
geopos 用于从给定的 key 里返回所有指定名称(member)的位置(经度和纬度),不存在的返回 nil。
127.0.0.1:6379> geopos geo1 xian
1) 1) "108.9533659815788269"
2) "34.27642210258066058"
127.0.0.1:6379> geopos geo1 baoji
1) 1) "107.25837081670761108"
2) "34.35628102742678891"
127.0.0.1:6379> geopos geo1 weinan
1) (nil)
geodist
GEODIST key member1 member2 [m|km|ft|mi]
geodist 用于返回两个给定位置之间的距离。
member1 member2 为两个地理位置。
最后一个距离单位参数说明:
- m :米,默认单位。
- km :千米。
- mi :英里。
- ft :英尺。
返回结果
距离
127.0.0.1:6379> geodist geo1 xian yanan m
"268486.0792"
127.0.0.1:6379> geodist geo1 xian yanan km
"268.4861"
georadius、georadiusbymember
GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
georadius 以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。
georadiusbymember 和 GEORADIUS 命令一样, 都可以找出位于指定范围内的元素, 但是 georadiusbymember 的中心点是由给定的位置元素决定的, 而不是使用经度和纬度来决定中心点。
参数说明:
- m :米,默认单位。
- km :千米。
- mi :英里。
- ft :英尺。
- WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。
- WITHCOORD: 将位置元素的经度和维度也一并返回。
- WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。
- COUNT 限定返回的记录数。
- ASC: 查找结果根据距离从近到远排序。
- DESC: 查找结果根据从远到近排序。
127.0.0.1:6379> GEORADIUS geo1 108.9533659815788269 34.27642210258066058 200 km WITHCOORD WITHCOORD DESC
1) 1) "baoji"
2) 1) "107.25837081670761108"
2) "34.35628102742678891"
2) 1) "xian"
2) 1) "108.9533659815788269"
2) "34.27642210258066058"
127.0.0.1:6379> GEORADIUS geo1 108.9533659815788269 34.27642210258066058 200 km WITHCOORD WITHCOORD ASC
1) 1) "xian"
2) 1) "108.9533659815788269"
2) "34.27642210258066058"
2) 1) "baoji"
2) 1) "107.25837081670761108"
2) "34.35628102742678891"
127.0.0.1:6379>
127.0.0.1:6379> GEORADIUSBYMEMBER geo1 xian 200 km
1) "baoji"
2) "xian"
geohash
geohash 用于获取一个或多个位置元素的 geohash 值。GEOHASH key member [member ...]
返回结果
hash值
127.0.0.1:6379> GEOHASH geo1 xian yanan
1) "wqj6zrc6tk0"
2) "wqtb7z9sdv0"