Redis提供了GEO功能,也就是地理信息定位功能。通过Redis中的GEO功能,我们可以很方便的通过经纬度来计算两个地理位置之间的距离。所以我们在实际的开发中,可以使用Redis中的GEO功能,来实现和附近位置有关的功能。下面我们详细介绍Redis中的GEO功能的相关命令。
geoadd key longitude latitude member [longitude latitude member ...]
geoadd命令执行的时候,是需要添加经纬度的,并且geoadd命令执行成功后返回值会等于添加元素的个数,如果添加的元素已经存在了,则返回值为0。除此之外geoadd命令支持批量添加元素。
geopos key member [member ...]
geodist key member1 member2 [unit]
geodist命令中的unit参数指的是距离的单位。它们主要有4种选项:
获取指定位置范围内的地理信息位置集合
georadius key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
georadius命令的参数比较多,下面我们详细介绍一下该命令的参数。
除了使用georadius命令外,我们还可以使用georadiusbymember命令,该命令和georadius命令的区别是前者在获取位置集合中需要指定的中心节点是元素名字,而后者则需要输入中心节点的经纬度,除此之外,这两个命令没有其它区别。
geohash key member [member ...]
在Redis中我们可以通过geohash将经纬度转换成字符串。
在Redis中GEO信息会保存到zset类型中。
下面我们看一下geohash的特点:
下面为geohash长度与精度的对应关系。
删除地理位置信息
zrem key member [member ...]
Redis中并没有提供删除元素的命令,但我们知道Redis将地理位置信息保存到了zset中,所以我们可以直接使用zset中的命令删除指定元素,也就是zrem命令。
上述内容就是Redis中的GEO功能,如有不正确的地方,欢迎留言,谢谢。