特殊數據類型 :Geospatial 地理位置
127.0.0.1:6379> geoadd china:city 116.40 39.90 beijing # 加入一個地理位置
(integer) 1
127.0.0.1:6379> geoadd china:city 121.47 31.23 shanghai
(integer) 1
127.0.0.1:6379> geoadd china:city 106.50 29.53 chongqing
(integer) 1
127.0.0.1:6379> geoadd china:city 120.16 30.24 hangzhou
(integer) 1
127.0.0.1:6379> geopos china:city beijing #顯示一個地理位置
1) 1) "116.39999896287918"
2) "39.900000091670925"
127.0.0.1:6379> geopos china:city beijing chongqing
1) 1) "116.39999896287918"
2) "39.900000091670925"
2) 1) "106.49999767541885"
2) "29.529999579006592"
127.0.0.1:6379> geodist china:city beijing shanghai km #計算兩個地理位置之間的距離 (m 米/km 千米/im 英里/ft 尺)
"1067.3788"
127.0.0.1:6379> geodist china:city beijing chongqing km
"1464.0708"
127.0.0.1:6379> georadius china:city 110 30 1000 km
# 計算指定經緯度和半徑範圍內的其它位置名稱
1) "chongqing"
2) "hangzhou"
127.0.0.1:6379> georadius china:city 110 30 500 km
1) "chongqing"
127.0.0.1:6379> georadius china:city 110 30 500 km withcoord # 計算指定經緯度和半徑範圍內的其它位置信息
1) 1) "chongqing"
2) 1) "106.49999767541885"
2) "29.529999579006592"
127.0.0.1:6379> georadius china:city 110 30 1000 km withdist # 計算指定經緯度和半徑範圍內的其它位置距離
1) 1) "chongqing"
2) "341.9374"
2) 1) "hangzhou"
2) "977.5143"
127.0.0.1:6379> georadius china:city 110 30 1000 km withdist count 1 # 計算指定經緯度和半徑範圍內的其它位置距離,同時規定顯示多少個(可用於微信搖一搖搜索指定人數)
1) 1) "chongqing"
2) "341.9374"
127.0.0.1:6379> geohash china:city beijing chongqing
#拔兩地之間的距離轉換爲hash值
1) "wx4fbxxfke0"
2) "wm5xzrybty0"
127.0.0.1:6379> zrange china:city 0 -1 # geo底層實現是zset,所以可以通過它的命令去操作geo
1) "chongqing"
2) "hangzhou"
3) "shanghai"
4) "beijing"
127.0.0.1:6379> zrem china:city beijing
(integer) 1
127.0.0.1:6379> zrange china:city 0 -1
1) "chongqing"
2) "hangzhou"
3) "shanghai"
127.0.0.1:6379>
朋友的定位,附近的人,打車距離計算,微信搖一搖,這些功能都可以通過Geospatial數據類型來實現
Redis的GEO在3.2版本就推出了,可以計算地理位置信息,兩地之間的距離,方圓幾裏的人。