一、什么是GEO?
常用于LBS (Location Based Service)基于位置的服务
可以将用户给定的地址位置信息存储起来,并对这些信息进行操作
命令:GEOADD
语法:GETADD key longitude latitude member [longitude latitude member ...]
功能:将给定的空间元素(维度、经度、名字)添加到指定的键里面。
有效的经度-180-180之间
有效的维度-85.05112878-85.05112878
返回值:新添加到键里面的空间元素数量,不包括那些已经存在但是被更新的元素
127.0.0.1:6379> geoadd nearby 103.045372 -40.23647 jason (integer) 1 127.0.0.1:6379> geoadd nearby 108.045372 -60.23647 jason (integer) 0 127.0.0.1:6379> geoadd nearby 108.045372 -60.23647 jason 20.48573 30.48573 xiaoqiang
命令:GEOPOS
语法:GEOPOS key member [member...]
功能:从键里面返回所有给定位置元素的位置(经度和维度)
返回值:
GEOPOS命令返回一个数组,数组中的每个项都由两个元素组成
第一个元素为给定位置元素的经度,第二个元素则为给定元素的维度
127.0.0.1:6379> geopos nearby jason 1) 1) "108.04537385702133179" 2) "-60.23647097371166126" 127.0.0.1:6379> geopos nearby xiaoqiang 1) 1) "20.48572808504104614" 2) "30.48572886574113738"
命令:GEODIST
语法:GEODIST key member1 member2 [unit]
功能:返回2个规定位置之间的距离
如果两个位置之间的期中一个不存在,那么命令返回空值
指定单位的参数unit必须是以下单位的其中一个
(默认m km mi ft)
返回值:
计算出的距离会以双精度浮点数的形式被返回,如果给定的位置元素
不存在,那么命令返回空值
127.0.0.1:6379> geodist nearby jason xiaoqiang "12787965.8305" 127.0.0.1:6379> geodist nearby jason xiaoqiang km "12787.9658" 127.0.0.1:6379> geodist nearby jason xiaoqiang mi "7946.0933" 127.0.0.1:6379> geodist nearby jason xiaoqiang ft "41955268.4728"
命令:GEORADIUS
语法:GEORADIUS key longitude latitude radius m|km|ft|mi
[WITHCOORD] [WITHDIST] [WITHHASH] [ASC|DESC] [COUNT count]
功能:以给定的经纬度为中心,返回键包含的位置元素当中,与中心
的距离不超过给定最大距离的所有位置元素
选项:
WITHDIST 在返回位置元素的同时,将位置元素与中心之间的距离一并返回
WITHCOORD
WITHHASH
geohash
ASC
DESC
127.0.0.1:6379> georadius nearby 103.045372 -40.23647 10000000 km withcoord withdist withhash asc 1) 1) "jason" 2) "2251.2420" 3) (integer) 2897330011462370 4) 1) "108.04537385702133179" 2) "-60.23647097371166126" 2) 1) "xiaoqiang" 2) "11571.4294" 3) (integer) 3465237062956293 4) 1) "20.48572808504104614" 2) "30.48572886574113738" 127.0.0.1:6379> georadius nearby 103.045372 -40.23647 10000000 km withcoord withdist withhash asc count 1 1) 1) "jason" 2) "2251.2420" 3) (integer) 2897330011462370 4) 1) "108.04537385702133179" 2) "-60.23647097371166126"
命令:GEORADIUSBYMEMBER
语法:GEORADIUSBYMEMBER key member radius m|km|ft|mi
[WITHCOORD] [WITHDIST] [WITHHASH] [ASC|DESC] [COUNT count]
功能:和GEORADIUS一样
不同的是中心点是由给定的位置元素决定的
返回值:
一个数组,数组中每个项表示一个范围之内的位置元素
127.0.0.1:6379> georadiusbymember nearby jason 10000000 km withcoord withdist asc count 1 1) 1) "jason" 2) "0.0000" 3) 1) "108.04537385702133179" 2) "-60.23647097371166126"
命令:GEOHASH
语法:GEOHASH key member [member ...]
功能:返回一个或多个位置元素的Geohash表示
返回值:
一个数组,数组的每个项都是一个geohash 命令
返回的geohash 的位置与用户给定的位置元素的位置一一对应
127.0.0.1:6379> geohash nearby jason 1) "nmkc6dk1pe0" 127.0.0.1:6379> geohash nearby jason xiaoqiang 1) "nmkc6dk1pe0" 2) "smqt6jv20p0"