您当前的位置: 首页 > 慢生活 > 程序人生 网站首页程序人生
redis georadiusbymember
发布时间:2021-11-14 15:03:11编辑:雪饮阅读()
georadiusbymember 和 GEORADIUS 命令一样, 都可以找出位于指定范围内的元素, 但是 georadiusbymember 的中心点是由给定的位置元素决定的, 而不是使用经度和纬度来决定中心点。
georadiusbymember 语法格式如下:
GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count] [ASC|DESC] [STORE key] [STOREDIST key]
参数说明:
m :米,默认单位。
km :千米。
mi :英里。
ft :英尺。
WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。
WITHCOORD: 将位置元素的经度和维度也一并返回。
WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。
COUNT 限定返回的记录数。
ASC: 查找结果根据距离从近到远排序。
DESC: 查找结果根据从远到近排序。
georadiusbymember 实例:
先向西西里岛再添加一个地点:阿格里根托
127.0.0.1:6379> GEOADD Sicily 13.583333 37.316667 "Agrigento"
(integer) 1
然后再西西里岛同样添加另外两个点巴勒莫和卡塔尼亚
GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
(integer) 2
然后求西西里岛上这个阿格里根托成员100km范围内的地点:
127.0.0.1:6379> georadiusbymember Sicily Agrigento 100 km
1) "Agrigento"
2) "Palermo"
127.0.0.1:6379> georadiusbymember sicily Agrigento 100 km
(empty array)
127.0.0.1:6379> georadiusbymember Sicily agrigento 100 km
(error) ERR could not decode requested zset member
这里可以看到需要注意的是geo的key是区分大小写的,特别是发现了geo成员也区分大小写,且成员若不存在就会报错:(error) ERR could not decode requested zset member
那么我们也是可以通过asc和desc对该成员指定范围内的地点,按照该成员距离这些地点的距离进行升序和降序排序:
127.0.0.1:6379> georadiusbymember Sicily Agrigento 100 km withdist
1) 1) "Agrigento"
2) "0.0000"
2) 1) "Palermo"
2) "90.9778"
127.0.0.1:6379> georadiusbymember Sicily Agrigento 100 km withdist asc
1) 1) "Agrigento"
2) "0.0000"
2) 1) "Palermo"
2) "90.9778"
127.0.0.1:6379> georadiusbymember Sicily Agrigento 100 km withdist desc
1) 1) "Palermo"
2) "90.9778"
2) 1) "Agrigento"
2) "0.0000"
关键字词:redis,georadiusbymember
上一篇:redis georadius
下一篇:redis geohash