Redis的GEO结构

GEO就是Geolocation的简写形式,代表地理坐标。Redis在3.2版本中加入了对GEO的支持,允许存储地理坐标信息,帮助我们根据经纬度来检索数据。常见的命令有:

  • GEOADD:添加一个地理空间信息,包含:经度(longitude)、纬度(latitude)、值(member)
  • GEODIST:计算指定的两个点之间的距离并返回
  • GEOHASH:将指定member的坐标转为hash字符串形式并返回
  • GEOPOS:返回指定member的坐标
  • GEORADIUS:指定圆心、半径,找到该圆内包含的所有member,并按照与圆心之间的距离排序后返回。6.以后已废弃
  • GEOSEARCH:在指定范围内搜索member,并按照与指定点之间的距离排序后返回。范围可以是圆形或矩形。6.2.新功能
  • GEOSEARCHSTORE:与GEOSEARCH功能一致,不过可以把结果存储到一个指定的key。 6.2.新功能

命令概览:

bash 复制代码
GEOADD key [NX|XX] [CH] longitude latitude member [longitude latitude member ...]
summary: Add one or more geospatial items in the geospatial index represented using a sorted set
since: 3.2.0

GEODIST key member1 member2 [m|km|ft|mi]
summary: Returns the distance between two members of a geospatial index
since: 3.2.0

GEOHASH key member [member ...]
summary: Returns members of a geospatial index as standard geohash strings
since: 3.2.0

GEOPOS key member [member ...]
summary: Returns longitude and latitude of members of a geospatial index
since: 3.2.0

GEORADIUS key longitude latitude radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]] [ASC|DESC] [STORE key] [STOREDIST key]
summary: Query a sorted set representing a geospatial index to fetch members matching a given maximum distance from a point
since: 3.2.0

GEORADIUSBYMEMBER key member radius m|km|ft|mi [WITHCOORD] [WITHDIST] [WITHHASH] [COUNT count [ANY]] [ASC|DESC] [STORE key] [STOREDIST key]
summary: Query a sorted set representing a geospatial index to fetch members matching a given maximum distance from a member
since: 3.2.0

GEOSEARCH key [FROMMEMBER member] [FROMLONLAT longitude latitude] [BYRADIUS radius m|km|ft|mi] [BYBOX width height m|km|ft|mi] [ASC|DESC] [COUNT count [ANY]] [WITHCOORD] [WITHDIST] [WITHHASH]
summary: Query a sorted set representing a geospatial index to fetch members inside an area of a box or a circle.
since: 6.2

GEOSEARCHSTORE destination source [FROMMEMBER member] [FROMLONLAT longitude latitude] [BYRADIUS radius m|km|ft|mi] [BYBOX width height m|km|ft|mi] [ASC|DESC] [COUNT count [ANY]] [WITHCOORD] [WITHDIST] [WITHHASH] [STOREDIST]
summary: Query a sorted set representing a geospatial index to fetch members inside an area of a box or a circle, and store the result in another key.
since: 6.2

用例:

bash 复制代码
127.0.0.1:6379> geoadd geo1 111.203200 27.680740 yangxi
(integer) 1
127.0.0.1:6379> geoadd geo1 111.324864 27.736339 xinhua
(integer) 1
127.0.0.1:6379> geodist geo1 xinhua yangxi km
"13.4824"
127.0.0.1:6379> geodist geo1 xinhua yangxi m
"13482.4195"
127.0.0.1:6379> geohash geo1 xinhua
1) "wkzjv30rck0"
127.0.0.1:6379> geohash geo1 yangxi
1) "wkzj6rpsn20"
127.0.0.1:6379> geopos geo1 xinhua
1) 1) "111.32486253976821899"
   2) "27.73633963669661284"
127.0.0.1:6379> geosearch geo1 frommember yangxi byradius 20 km withdist
1) 1) "yangxi"
   2) "0.0000"
2) 1) "xinhua"
   2) "13.4824"

具体应用在查询附近的人啊,商店,等跟地理位置有关的。

相关推荐
墨黎芜16 分钟前
SQL Server从入门到精通——C#与数据库
数据库·学习·信息可视化
爱学习的阿磊17 分钟前
持续集成/持续部署(CI/CD) for Python
jvm·数据库·python
一个响当当的名号17 分钟前
lectrue10 排序和聚合算法
数据库
hamawari23 分钟前
SQL语法
数据库·sql·oracle
陌上丨27 分钟前
Redis内存使用率在95%以上,请问是什么原因?如何解决?
数据库·redis·缓存
heartbeat..34 分钟前
Redis 性能优化全指南:从基础配置到架构升级
java·redis·性能优化·架构
m0_5613596740 分钟前
使用PyQt5创建现代化的桌面应用程序
jvm·数据库·python
2301_7903009640 分钟前
用Python实现自动化的Web测试(Selenium)
jvm·数据库·python
xiaoye37081 小时前
redis和mysql数据库如何保证数据一致性
redis·mysql