Redis geospatial

三种特殊数据类型

geospatial地理位置

规则:两极数据无法直接添加。

利用geo这个功能可以推算地理位置的信息,两地之间的距离,方圆几里的人!

geospatial命令以“geo”开头

1.利用geoadd key longitude latitude member 命令添加位置

复制代码

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 106.50 29.53 chongqing
(integer) 1
127.0.0.1:6379>

复制代码

 

 

 2.利用geopos 命令获取指定的城市的经纬度

127.0.0.1:6379> geopos china:city beijing
1) 1) "116.39999896287918"
   2) "39.900000091670925"
127.0.0.1:6379>    

 3.利用geodist命令获取两个给定位置之间的距离

指定的单位有:m、km、mi、ft

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

 

 4.利用georadius命令以给定的 经纬度为中心,找出一半径内的元素

127.0.0.1:6379> georadius china:city 110 30 1000 km
1) "chongqing"
127.0.0.1:6379>   

 

 显示经纬度

127.0.0.1:6379> georadius china:city 110 30 1000 km withcoord
1) 1) "chongqing"
   2) 1) "106.49999767541885"
      2) "29.529999579006592"
127.0.0.1:6379>

5.利用georadiusbymemer命令找出位于指定范围内的元素,中心点是由给定的位置元素决定。

127.0.0.1:6379> georadiusbymember china:city beijing 1000 km
1) "beijing"

 

 6.利用geohash 命令返回一个或多个位置元素的geohash元素

该命令返回11个字符的geohash字符串!将二维的经纬度转换为一维的字符串,如果两个字符串越接近,那么距离越接近!

127.0.0.1:6379> geohash china:city beijing chongqing
1) "wx4fbxxfke0"
2) "wm5xzrybty0"
127.0.0.1:6379>

 

 7.geo底层实现原理其实就是zset,可以使用zset命令来操作geo

①比如查看地图中全部的元素

127.0.0.1:6379> zrange china:city 0 -1
1) "chongqing"
2) "shanghai"
3) "beijing"
127.0.0.1:6379>

 

②比如移除一个(指定)地理元素

127.0.0.1:6379> zrem china:city beijing
(integer) 1
127.0.0.1:6379> zrange china:city 0 -1
1) "chongqing"
2) "shanghai"
127.0.0.1:6379>

应用场景:

朋友定位

附近的人

打车距离计算

 

posted @   创客未来  阅读(193)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示