三种特殊的基本数据类型(一)

geospatial(地理位置)

做朋友的的定位、打车距离计算、两地之间的距离等

可以查询一些具体的测试数据(百度一下你就知道😄)

五大命令

GEOADD 
GEODIST
GEOHASH
GEOPOS
GEORADIUS
GEORADIUSBYMEMBER

GEOADD添加地理位置

规则:两级是无法直接添加的,其实可以通过java程序一次性导入

传参:key 、经度、纬度、名称

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
添加一些城市的数据

GEOPOS

获取指定城市的经度和纬度,获取到的一定是一个坐标值

127.0.0.1:6379> GEOPOS china:city chongqin
1) 1) "160.49999982118606567"
   2) "29.52999957900659211"

GEODIST

返回两个给定位置之间的距离

指定单位的参数必须是m、km、mi(英里)、ft(英尺)中的一个,不指定默认用米作为单位

127.0.0.1:6379> GEODIST china:city beijing shanghai km
"1067.3788"

查看我附近的人怎么实现呢

GEORADIUS 给定的经纬度为中心,找出某一半径内的元素

127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km
1) "xian"
2) "shenzheng"
3) "hangzhou"
中间两个数字是以这两个数字做代表的经纬度为中心
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km withdist
1) 1) "xian"
   2) "483.8340"
2) 1) "shenzheng"
   2) "924.6408"
3) 1) "hangzhou"
   2) "977.5143"
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km withdist withcoord count 1(这里限定一个)
1) 1) "xian"
   2) "483.8340"
   3) 1) "108.96000176668167114"
      2) "34.25999964418929977"
withcoord是显示他人的经纬度信息

GEORADIUSBYMEMBER找出位于指定范围内的元素,中心点是由给定的未知元素决定的

127.0.0.1:6379> GEORADIUSBYMEMBER china:city beijing 1000 km
1) "beijing"
2) "xian"
和上面的比较类似,但是这时候中心点变成城市,而不是坐标 更加具有实际意义
用于找出周围的人

GEOHASH返回一个或多个位置元素的geohash表示

127.0.0.1:6379> geohash china:city beijing chongqin
1) "wx4fbxxfke0"
2) "xt4purb89n0"
不太会用到,将经纬度转换为哈希

GEO底层原理是ZSet,可以使用zset的指令来操作

127.0.0.1:6379> ZREM china:city beijing
(integer) 1

127.0.0.1:6379> ZRANGE china:city 0 -1 查看地图中所有元素
1) "xian"
2) "shenzheng"
3) "hangzhou"
4) "shanghai"
5) "chongqin"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值