Redis_07特殊数据类型一

本文介绍了Redis中的特殊数据类型——geospatial,包括geoadd用于添加地理位置信息,geopos查询经度和维度,geodist计算两点间距离,georadius和georadiusbymember查找指定范围内元素,以及geohash获取Geohash字符串。这些命令基于Zset实现,提供了灵活的地理位置操作。
摘要由CSDN通过智能技术生成

特殊数据类型一:geospatial(地理位置)

geoadd:添加城市的经纬度(两极无法直接添加)

geoadd key 值(经度 、维度、名称)

  • 有效的经度从-180度到180度。
  • 有效的纬度从-85.05112878度到85.05112878度。
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
127.0.0.1:6379> geoadd china:city 160.50 29.53 chongqin
(integer) 1
127.0.0.1:6379> geoadd china:city 114.05 22.52 shenzhen 120.16 30.24 hangzhou 108.96 34.26 xian
(integer) 3

geopos:查询给定位置的经度和维度

127.0.0.1:6379> GEOPOS china:city beijing # 获取指定位置的经度和维度
1) 1) "116.39999896287918091"
   2) "39.90000009167092543"
127.0.0.1:6379> GEOPOS china:city chongqin
1) 1) "160.49999982118606567"
   2) "29.52999957900659211"

geodist:返回两个给定位置之间的距离(如果用户没有显式地指定单位参数, 那么 GEODIST 默认使用米作为单位。)

  • m 表示单位为米。
  • km 表示单位为千米。
  • mi 表示单位为英里。
  • ft 表示单位为英尺。
127.0.0.1:6379> geodist china:city beijing shanghai km # 北京到上海的距离(km)
"1067.3788"
127.0.0.1:6379> geodist china:city beijing chongqin km
"4148.3285"

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

  • WITHDIST: 在返回位置元素的同时, 将位置元素与中心之间的距离也一并返回。 距离的单位和用户给定的范围单位保持一致。
  • WITHCOORD: 将位置元素的经度和维度也一并返回。
  • WITHHASH: 以 52 位有符号整数的形式, 返回位置元素经过原始 geohash 编码的有序集合分值。 这个选项主要用于底层应用或者调试, 实际中的作用并不大。
  • ASC: 根据中心的位置, 按照从近到远的方式返回位置元素。
  • DESC: 根据中心的位置, 按照从远到近的方式返回位置元素。
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km # 默认由近到远
1) "xian"
2) "shenzhen"
3) "hangzhou"
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km desc # 由远到近
1) "hangzhou"
2) "shenzhen"
3) "xian"
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km withdist # 距离
1) 1) "xian"
   2) "483.8340"
2) 1) "shenzhen"
   2) "924.6408"
3) 1) "hangzhou"
   2) "977.5143"

georadiusbymember:返回指定位置范围内的元素,中心点为位置元素

127.0.0.1:6379> GEORADIUSBYMEMBER china:city beijing 1000 km  # 查询北京1000km范围内的城市
1) "beijing"
2) "xian"
127.0.0.1:6379> GEORADIUSBYMEMBER china:city beijing 1000 km withcoord # 查询北京1000km范围内的城市,并显示经纬度
1) 1) "beijing"
  2) 1) "116.39999896287918091"
     2) "39.90000009167092543"
2) 1) "xian"
  2) 1) "108.96000176668167114"
     2) "34.25999964418929977"
127.0.0.1:6379> 

geohash:返回一个或多个位置元素(该命令返回11个字符的Geohash字符串)

127.0.0.1:6379> geohash china:city beijing shanghai
1) "wx4fbxxfke0"
2) "wtw3sj5zbj0"

GEO底层实现原理其实就是Zset,可以使用Zest命令来操作geo!

127.0.0.1:6379> ZRANGE china:city 0 -1
1) "xian"
2) "shenzhen"
3) "hangzhou"
4) "shanghai"
5) "beijing"
6) "chongqin"
127.0.0.1:6379> zrem china:city chongqin
(integer) 1
127.0.0.1:6379> ZRANGE china:city 0 -1
1) "xian"
2) "shenzhen"
3) "hangzhou"
4) "shanghai"
5) "beijing"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值