Redis的geospatial(地理位置)类型的用法
Redis的geospatial(地理位置)类型的用法
说明:
- 像微信中朋友的定位,附近的人、打车距离等
- 可以使用Geo在3.2版本之后推出,可以推算地理位置的信息,两地之间的距离,周围的人
- 底层是Zset,命令同样适用
常用命令:
- 添加 geoadd
- 获取 精度、维度 geopos
- 返回位置间的距离 geodist
- 返回位置附近的半径内的元素 georedius
- 返回指定城市距离的城市
georadiusbymember xxx kaifeng 1000 km
- 移除
zrem xxx item
- 获取指定城市的11为geohash信息
geohash xxx xxx
root@tangshihua:/# cd usr/local/bin
root@tangshihua:/usr/local/bin# redis-server tconfig/redis.conf
root@tangshihua:/usr/local/bin# redis-cli -p 6379
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> keys *
1) "set"
127.0.0.1:6379> flushdb
OK
127.0.0.1:6379> geoadd china:city 116.52 40.32
(error) ERR wrong number of arguments for 'geoadd' command
127.0.0.1:6379>
127.0.0.1:6379> geoadd china:city 116.52 40.32 beijing #1、添加一个城市的信息(精度、维度、城市名称)
(integer) 1
127.0.0.1:6379> geoadd china:city 121.48 31.40 shanghai 106.54 29.40 chongqing 113.88 22.55 shenzhen # 2、也可以同时添加多个
(integer) 3
127.0.0.1:6379> keys *
1) "china:city"
127.0.0.1:6379> geopos china:city beijing # 3、获取一个城市的精度维度信息
1) 1) "116.52000099420547485"
2) "40.32000085305222825"
127.0.0.1:6379> geopos china:city shanghai
1) 1) "121.48000091314315796"
2) "31.40000025319353938"
127.0.0.1:6379> geopos china:city shanghai beijing # 4、也可以同获取多个
1) 1) "121.48000091314315796"
2) "31.40000025319353938"
2) 1) "116.52000099420547485"
2) "40.32000085305222825"
127.0.0.1:6379> geodist china beijing shanghai km
(nil)
127.0.0.1:6379> geodist china:city beijing shanghai km
"1087.7347"
127.0.0.1:6379> geodist china:city beijing chongqing # 5、计算两个城市的距离,默认单位是米
"1515915.5680"
127.0.0.1:6379> geodist china:city beijing chongqing km # 6、计算两个城市的距离,指定单位
"1515.9156"
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km # 7、查找指定经纬度附件方圆1000km的城市(城市数据要录入才能查询)
1) "chongqing"
2) "shenzhen"
127.0.0.1:6379> GEORADIUS china:city 110 30 500 km
1) "chongqing"
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km count 1 # 8、指定数量
1) "chongqing"
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km
1) "chongqing"
2) "shenzhen"
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km withdist #9、同时显示距离
1) 1) "chongqing"
2) "340.8679"
2) 1) "shenzhen"
2) "914.3335"
127.0.0.1:6379> GEORADIUS china:city 110 30 1000 km withcoord # 10、同时显示经纬度
1) 1) "chongqing"
2) 1) "106.54000014066696167"
2) "29.39999880018641676"
2) 1) "shenzhen"
2) 1) "113.87999922037124634"
2) "22.5500010475923105"
127.0.0.1:6379> georadiusbymember china:city beijing 1000 km # 11、查询指定城市方圆1000km的城市信息
1) "beijing"
127.0.0.1:6379> georadiusbymember china:city beijing 2000 km
1) "chongqing"
2) "shenzhen"
3) "shanghai"
4) "beijing"
127.0.0.1:6379> keys *
1) "china:city"
127.0.0.1:6379> zrange china:city 0 -1 # 12、显示全部城市信息
1) "chongqing"
2) "shenzhen"
3) "shanghai"
4) "beijing"
127.0.0.1:6379> zrem china:city shanghai # 13、移除城市信息
(integer) 1
127.0.0.1:6379> zrange china:city 0 -1
1) "chongqing"
2) "shenzhen"
3) "beijing"
127.0.0.1:6379> geohash china:city beijing # 14、获取指定城市的geohash值
1) "wx4v7kp30b0"
127.0.0.1:6379>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)