Redis之geospatial
地理空间(geospatial)
Redis GEO 主要用于存储地理位置信息,并对存储的信息进行操作,该功能在 Redis 3.2 版本新增。
Redis GEO 操作方法有
- geoadd:添加地理位置的坐标。
- geopos:获取地理位置的坐标。
- geodist:计算两个位置之间的距离。
- georadius:根据用户给定的经纬度坐标来获取指定范围内的地理位置集合。
- georadiusbymember:根据储存在位置集合里面的某个地点获取指定范围内的地理位置集合。
- geohash:返回一个或多个位置对象的 geohash 值。
案例
- geoadd:添加地理位置
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
- 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 chongqing
1) 1) "106.49999767541885376"
2) "29.52999957900659211"
127.0.0.1:6379> GEOPOS china:city xian
1) 1) "120.1600000262260437"
2) "34.25999964418929977"
- geodist
获取两个城市之间的距离
127.0.0.1:6379> geodist china:city beijing shanghai
"1067378.7564"
127.0.0.1:6379> geodist china:city beijing shanghai km #获取北京和重庆之间的距离,以KM为单位
"1067.3788"
- georadius
获取附近的人,以给定的经纬度为中心,找出某一半径内的元素
127.0.0.1:6379> georadius china:city 110 30 1000 km #以110 30为经纬度获取半径1000km之内的位置
1) "chongqing"
127.0.0.1:6379> georadius china:city 110 30 10000 km
1) "chongqing"
2) "shanghai"
3) "xian"
4) "beijing"
127.0.0.1:6379> georadius china:city 110 30 10000 km withdist #显示到中心位置的距离
1) 1) "chongqing"
2) "341.9374"
2) 1) "shanghai"
2) "1105.9098"
3) 1) "xian"
2) "1067.1103"
4) 1) "beijing"
2) "1245.2858"
127.0.0.1:6379> georadius china:city 110 30 1000 km withdist withcoord count 1 #withcoord显示它人的经度纬度
1) 1) "chongqing"
2) "341.9374"
3) 1) "106.49999767541885376"
2) "29.52999957900659211"
127.0.0.1:6379>
127.0.0.1:6379> georadius china:city 110 30 1000 km withdist withcoord count 2 #count限制显示的数量
1) 1) "chongqing"
2) "341.9374"
3) 1) "106.49999767541885376"
2) "29.52999957900659211"
127.0.0.1:6379> georadius china:city 110 30 10000 km withdist withcoord count 2
1) 1) "chongqing"
2) "341.9374"
3) 1) "106.49999767541885376"
2) "29.52999957900659211"
2) 1) "xian"
2) "1067.1103"
3) 1) "120.1600000262260437"
2) "34.25999964418929977"
- georadiusbymember
127.0.0.1:6379> georadiusbymember china:city beijing 10000 km #显示北京10000km之内的城市
1) "chongqing"
2) "shanghai"
3) "xian"
4) "beijing"
- geohash
将二维的经纬度转换为一维的字符串,如果两个字符串越接近,那么则距离越近!
127.0.0.1:6379> geohash china:city beijing chongqing
1) "wx4fbxxfke0"
2) "wm5xzrybty0"
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!