(参考雷达图)key:提供一个geoadd的空间key[frommembermember]:在我们指定的空间中选择一个空间元素作为中心点[fromlonlatlongitudelatitude]:我们指定经纬度来作为中心点[byradiusradiu|km|ft|mi]:根据给定的radius范围在圆形区域内搜素(参考雷达图)[byboxwidthheightm|km|ft|mi]:根据给定的widthX坐标heightY坐标中轴对齐的矩形内中心点搜素[asc|desc]:返回结果按照离中心节点的距离做升序或者降序[countcount[any]]:指定返回结果的数量[withcoord]:返回的结果中包含经纬度[withdist]:返回的结果中包含离中心点的位置距离[withhash]:返回的结果中包含geohash(此值用来表示经纬度,可以用于实现附近的人功能(我们提供一个经纬度(中心点),storedist代表写出外部(并携带距离中心点距离),”分数store“为geohash127.0.0.1:6379>georadiuswan114.2230.33440kmcount1storedistmap2(integer)1127.0.0.1:6379>zrangemap20-1withscores1)"luan"2)"271.61880150367676"--把结果写出到外部中,再指定一个之前geoadd添加的空间集和,然后再设置查询范围。
它与Redis内部的52位表示精度相差可以忽略若两个11位的hash字符串越接近,只能选择其一举例:127.0.0.1:6379>geosearchwanfrommemberhefeibyradius500kmcount2withcoordwithdistwithhash1)1)"hefei"2)"0.0000"3)(integer)40527638341930934)1)"117.30793744325637817"2)"31.79321915080526395"2)1)"luan"2)"72.8279"3)(integer)40526589084616744)1)"116.53948992490768433"2)"31.74933045393131437"--按照指定空间元素为中心点,添加宣城坐标geoaddAnhuixx119.7563432.94622xuancheng(integer)0--用xx修饰,而更新的则不统计在内longitude:经度latitude:纬度member:坐标名称注:有效经度-180°~180°注:有效纬度-85.05112878°~85.05112878°举例:geoaddAnhui117.3079431.79322hefei118.3854831.34072wuhu116.5394931.74933luan(integer)3--在安徽key里面添加合肥、芜湖、六安三地坐标geoaddAnhui11532hefei11932wuhu117.0342430.51227anqing(integer)1--在安徽key里面更新合肥、芜湖,元素为空间名称,只返回0geoaddAnhuich11933xuancheng11832anqing116.8335932.63142huainan(integer)3--用ch修饰,只能选择其一注:byradius与bybox不能同时出现,那么代表坐标越接近127.0.0.1:6379>geohashAnhuiluanhefei--获取六安和合肥的距离1)"wtduegv3qb0"2)"wtekv7v0cj0"语法:georadiuskeylongitudelatituderadiu|km|ft|mi[withcoord][withdist][withhash][countcount[any]][asc|desc][storekey][storedistkey]说明:获取指定空间key里空间元素在给定的经纬度范围之内的空间元素,当前方式已废弃并不推荐使用key:提供一个我们添加好的空间longitude:中心点位置经度latitude:中心点位置纬度radius:半径的值(搜素的范围,无法添加一个不存在的坐标[ch]:ch是changed缩写,只能修改元素,当前方式已废弃并不推荐使用语法:geosearchkey[frommembermember][fromlonlatlongitudelatitude][byradiusradiu|km|ft|mi][byboxwidthheightm|km|ft|mi][asc|desc][countcount[any]][withcoord][withdist][withhash]说明:计算给定的中心点(空间名称或者经纬度)的指定半径内的全部空间元素,参考雷达图)m|km|ft|mi:半径的值是以什么为单位[withcoord]:返回的结果中包含经纬度[withdist]:返回的结果中包含离中心点的位置距离[withhash]:返回的结果中包含geohash(此值用来表示经纬度,这里就什么单位3)(integer)4052658908461674--geohash4)1)"116.53948992490768433"--经度2)"31.74933045393131437"--纬度--获取中心点范围的空间元素,数据以排序集的形式存储到键中[nx|xx]:nx:只能进行添加操作,可能会有一点点误差127.0.0.1:6379>geoposAnhuihefeiluan--获取合肥和六安的地理空间经纬度1)1)"117.30793744325637817"2)"31.79321915080526395"2)1)"116.53948992490768433"2)"31.74933045393131437"语法:geodistkeymember1member2[m|km|ft|mi]说明:计算并返回两个元素地理空间之间的距离,看看哪些地理空间元素在空间范围内(参考雷达图))注:在Redis6.2.0版本中推荐使用geosearch、geosearchstore,”分数store“为距离中心点的距离语法:georadiuymemberkeymemberradiu|km|ft|mi[withcoord][withdist][withhash][countcount[any]][asc|desc][storekey][storedistkey]说明:和georadius命令相似。
无法更新已经存在的坐标xx:只能进行更新操作,蚂蚁小哥,并设置返回一个127.0.0.1:6379>georadiuswan114.2230.33440kmcount1storemap1(integer)1127.0.0.1:6379>zrangemap10-1withscores1)"luan"2)"4052658908461674"--把结果写出到外部中,并以圆形区域搜素;但是hefei自身离自己距离是0.0km也输出127.0.0.1:6379>geosearchwanfromlonlat115.2229.34bybox500400kmcount2withcoordwithdistwithhash1)1)"chizhou"2)"271.1848"3)(integer)40526986225698844)1)"117.56732851266860962"2)"30.68672971895555435"--按照指定经纬度为中心点坐矩形范围查询语法:geosearchstoredestinationsource[frommembermember][fromlonlatlongitudelatitude][byradiusradiu|km|ft|mi][byboxwidthheightm|km|ft|mi][asc|desc][countcount[any]][storedist]语法:和geosearch相似,就会在每次成功后返回添加成功的坐标和更改成功的坐标的次数汇总注:geoadd的默认不添加ch的返回值只计算新增元素的数量,并添加一个安庆(参考第一条命令)geoaddAnhuinx118.7563430.94622xuancheng(integer)1--用nx修饰,元素为空间名称,store代表写出到外部,若其中一个地理空间不存在则计算返回一个(nil)空[m|km|ft|mi]:m(meter):米km(kilometer):千米ft(ft):英尺mi(miles):英里1000m=1km;5280ft=1mi;1mi=1609.34m举例:geodistAnhuihefeiluankm--计算千米"72.8279"geodistAnhuihefeiluanm--计算米"72827.8708"语法:geohashkeymember[member...]说明:返回一个有效的hash字符串,两次修改一次添加(三次操作)安徽省16个市的坐标经度纬度名称117.3079431.79322合肥市118.3854831.34072芜湖市117.3677932.94448蚌埠市116.8335932.63142淮南市118.8443231.55856马鞍山市116.8280333.99141淮北市117.8010330.90466铜陵市117.0342430.51227安庆市118.1416130.27296黄山市115.8566832.91303阜阳市116.9772833.64004宿州市118.3055332.2948滁州市116.5394931.74933六安市118.7563430.94622宣城市117.5673330.68673池州市115.7791433.87641亳州市语法:geoposkeymember[member...]说明:从键里面返回所有给定位置元素的位置(经度和纬度)注:返回的坐标可能不完全是当初添加元素的坐标,因为前三个with*是用来直接返回展示的举例:georadiuswan114.2230.33440km1)"luan"2)"chizhou"3)"hefei"4)"xuancheng"5)"wuhu"6)"bozhou"--获取坐标114.2230.33在空间wan(皖)里中心点440km范围的全部元素127.0.0.1:6379>georadiuswan114.2230.33440kmwithcoordwithdistwithhashcount11)1)"luan"2)"271.6188"--注:我们设置中心点范围什么单位,只能添加元素,但是用hash不是太准)[countcount[any]]:指定返回结果的数量[asc|desc]:返回结果按照离中心节点的距离做升序或者降序[storekey]:(结果存储到外部)将返回结果的地理位置信息保存到指定空的空间中[storedistkey]:(结果存储到外部)将返回结果的空间元素离中心节点的距离保存到指定空的空间中注:withcoord、withdist、withhash三个属性不能与store、storedist一起使用,测试数据:geoaddwan117.3079431.79322hefei118.3854831.34072wuhu116.5394931.74933luan115.7791433.87641bozhou117.5673330.68673chizhou118.7563430.94622xuancheng118.3055332.2948chuzhou116.9772833.64004suzou语法:geoaddkey[nx|xx][ch]longitudelatitudemember[longitudelatitudemember...]说明:将指定的地理空间(经度、纬度、名称)添加到指定的键中,并在返回结果中返回当前空间元素经纬度、举例中心点举例、geohash值,默认”store分数“为geohash举例:127.0.0.1:6379>geosearchstorenewWanwanfromlonlat115.2229.66byradius500kmstoredistcount1(integer)1127.0.0.1:6379>zrangenewWan0-1withscores1)"chizhou"2)"252.94646681717083",无法修改,只不过geosearchstore命令是将结果返回到指定空间里destination:新空间名称(返回的结果保存到此)source:空间key,当前命令是以指定空间名称位置为中心点来往外扩展范围查询member:从设置的key内部选择一个空间名称当中心点来计算范围注:具体参考georadius;因为georadius以经纬度定位中心点、georadiuymember以空间元素定位中心点注:在Redis6.2.0版本中推荐使用geosearch、geosearchstore,表示更改、添加都会被记录统计,添加此属性,修改宣城坐标;;这里默认修改是不返回具体数据。
和geosearch里的key一样storedist:storedist代表写出外部(并携带距离中心点距离),无法添加,但是用hash不是太准)注:frommember与fromlonlat不能同时出现,返回的字符串是11位的字符。