geospatial(地理位置)
这个功能可以推算地理位置的信息,两地之间的距离,方圆几里的人!
geoadd key longitude latitude member :给key中添加元素经纬度和元素名称(经度:longitude,纬度:latitude),规则:地球两极是无法直接添加的!
geopos key member :获取key指定城市(member)的经度和纬度
geodist key member1 member2 [unit]:计算key两个城市直接的距离,单位
###################################
127.0.0.1:6379> geoadd china:city 116.23128 40.22077 beijing
(integer) 1
127.0.0.1:6379> geoadd china:city 121.48941 31.40527 shanghai
(integer) 1
127.0.0.1:6379> geoadd china:city 106.54041 29.40268 chongqing
(integer) 1
127.0.0.1:6379> geoadd china:city 113.88308 22.55329 shenzhen 120.21201 30.2084 hangzhou
(integer) 2
127.0.0.1:6379> geoadd china:city 108.93425 34.23053 xian
(integer) 1
######################################
127.0.0.1:6379> geopos china:city shanghai
1) 1) "121.48941010236740112"
2) "31.40526993848380499"
127.0.0.1:6379> geopos china:city beijing
1) 1) "116.23128265142440796"
2) "40.22076905438526495"
127.0.0.1:6379> geopos china:city xian hangzhou
1) 1) "108.93425256013870239"
2) "34.23053097599082406"
2) 1) "120.21200805902481079"
2) "30.20839995425554747"
127.0.0.1:6379> geodist china:city xian shenzhen
"1385584.0998"
127.0.0.1:6379> geodist china:city xian shenzhen km
"1385.5841"
#############################################
我附近的人?(获取所有附近的人的经纬度,定位!)通过半径来查询!
georadius key longitude latitude m|km :key通过以经纬度为中心来查询半径以内的附近的人!,withcoord :经纬度,withdist:距离,count:显示几个数量!
georadiusbymember key member radius m|km withcoord withdist:key通过member找出城市周围在radius半径中的城市数据
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km
1) "chongqing"
2) "xian"
3) "shenzhen"
4) "hangzhou"
127.0.0.1:6379> GEORADIUS china:city 110 30 100 km
(empty list or set)
127.0.0.1:6379> GEORADIUS china:city 110 30 500 km
1) "chongqing"
2) "xian"
127.0.0.1:6379> GEORADIUS china:city 110 30 500 km withcoord withdist count 2
1) 1) "chongqing"
2) "340.7667"
3) 1) "106.54040783643722534"
2) "29.40268053517299762"
2) 1) "xian"
2) "481.1278"
3) 1) "108.93425256013870239"
2) "34.23053097599082406"
127.0.0.1:6379> GEORADIUSBYMEMBER china:city beijing 1000 km withdist
1) 1) "beijing"
2) "0.0000"
2) 1) "xian"
2) "927.5371"
127.0.0.1:6379> GEORADIUSBYMEMBER china:city beijing 1000 km withcoord
1) 1) "beijing"
2) 1) "116.23128265142440796"
2) "40.22076905438526495"
2) 1) "xian"
2) 1) "108.93425256013870239"
2) "34.23053097599082406"
geohash命令:返回一个或多个位置元素的geohash表示
geo:底层的实现其实就是zset!我们可以使用zset命令来操作geo!
127.0.0.1:6379> zrange china:city 0 -1
1) "chongqing"
2) "xian"
3) "shenzhen"
4) "hangzhou"
5) "shanghai"
6) "beijing"