>  기사  >  데이터 베이스  >  Redis 특수 데이터 유형 지리공간을 사용하는 방법

Redis 특수 데이터 유형 지리공간을 사용하는 방법

PHPz
PHPz앞으로
2023-05-26 14:55:06565검색

Redis 특수 데이터 유형 지리공간

이는 Redis 버전 3.2에서 출시되었습니다. 지리적 위치 정보, 두 장소 사이의 거리, 주변 사람 및 기타 시나리오를 계산하는 데 사용할 수 있습니다.

1. geoadd

지정된 키에 지정된 지리공간 위치(위도, 경도, 이름)를 추가합니다.

여기서 온라인 위도 및 경도 쿼리 도구를 사용하여 데이터를 얻을 수 있습니다.

geoadd china:city 121.472644 31.231706 shanghai
geoadd china:city 120.619585 31.299379 suzhou
geoadd china:city 116.405285 39.904989 beijing
geoadd china:city 113.280637 23.125178 guangzhou 113.26197 23.10379 haizhuqu

china:city 키로 이동하여 상하이, 쑤저우, 베이징, 광저우 및 광저우 하이주구 5곳의 경도와 위도를 추가하세요. china:city这个key里,添加了5个地方的经纬度:上海、苏州、北京、广州、广州海珠区。

Redis 특수 데이터 유형 지리공간을 사용하는 방법

二、geopos

从key里返回所有给定位置元素的位置(经度和纬度)。

geopos china:city suzhou shanghai

返回位置的坐标。

Redis 특수 데이터 유형 지리공간을 사용하는 방법

三、geodist

返回两个给定位置之间的距离。

如果两个位置之间的其中一个不存在, 那么命令返回空值。

指定单位的参数 unit 必须是以下单位的其中一个:

  • m 表示单位为米(默认)。

  • km 表示单位为千米。

  • mi 表示单位为英里。

  • ft 表示单位为英尺。

geodist china:city suzhou shanghai km

Redis 특수 데이터 유형 지리공간을 사용하는 방법

四、georadius

以给定的经纬度为中心, 返回键包含的位置元素当中, 与中心的距离不超过给定最大距离的所有位置元素。

georadius china:city 121.49295 31.22337 30 km

我以 上海黄浦区的坐标121.49295 31.22337为中心,寻找30km之内的城市。

Redis 특수 데이터 유형 지리공간을 사용하는 방법

再远点,100km之内,还可以找到suzhou,加上withdist显示出距离。

加上withcoord可以返回经纬度。

Redis 특수 데이터 유형 지리공간을 사용하는 방법

再加上count,只返回我指定的数量。

georadius china:city 121.49295 31.22337 100 km withdist withcoord count 1

Redis 특수 데이터 유형 지리공간을 사용하는 방법

五、georadiusbymember

这个命令和 georadius命令一样, 都可以找出位于指定范围内的元素。

但是这里不是指定中心点坐标,而是指定以哪个元素为中心点。

georadiusbymember china:city suzhou 100 km withdist

这里以元素suzhou

Redis 특수 데이터 유형 지리공간을 사용하는 방법

Redis 특수 데이터 유형 지리공간을 사용하는 방법2. geopos

키에서 주어진 모든 위치 요소의 위치(경도 및 위도)를 반환합니다.

geohash china:city suzhou shanghai

위치의 좌표를 반환합니다.

Redis 특수 데이터 유형 지리공간을 사용하는 방법Redis 특수 데이터 유형 지리공간을 사용하는 방법

3. geodist

주어진 두 위치 사이의 거리를 반환합니다.

두 위치 중 하나가 존재하지 않으면 명령은 null 값을 반환합니다.

단위를 지정하는 매개변수 단위는 다음 단위 중 하나여야 합니다.

  • Redis 특수 데이터 유형 지리공간을 사용하는 방법m은 단위가 미터(기본값)임을 의미합니다.
  • 🎜km는 단위가 킬로미터라는 뜻입니다. 🎜
  • 🎜mi는 마일을 의미합니다. 🎜
  • 🎜ft는 발을 의미합니다. 🎜
zrem china:city haizhuqu
🎜Redis 특수 데이터 사용 방법 type Geospatial 🎜🎜4. georadius🎜🎜 주어진 경도와 위도를 중심으로 리턴키에 포함된 위치 요소 중 중심으로부터의 거리가 주어진 최대 거리를 초과하지 않는 모든 위치 요소를 반환합니다. 🎜rrreee🎜상하이 황푸구 좌표 121.49295 31.22337을 기준으로 30km 이내의 도시를 찾고 있습니다. 🎜🎜Redis 특수 데이터 유형 지리공간을 사용하는 방법🎜🎜더 알아보기 , 100km 이내에서는 쑤저우를 찾을 수도 있고, withdist를 추가하여 거리를 표시할 수도 있습니다. 🎜🎜위도와 경도를 반환하려면 withcoord를 추가하세요. 🎜🎜Redis 특수 데이터 유형 지리공간을 사용하는 방법🎜🎜Pluscount는 내가 지정한 양만 반환합니다. 🎜rrreee🎜Redis 특수 데이터 유형 지리공간을 사용하는 방법🎜🎜5 . georadiusbymember 🎜🎜이 명령은 지정된 범위 내의 요소를 찾을 수 있는 georadius 명령과 동일합니다. 🎜🎜그러나 여기서는 중심점의 좌표를 지정하지 않고 어떤 요소가 중심점인지 지정합니다. 🎜rrreee🎜여기서 suzhou 요소를 중심점으로 삼아 금요일에 100km 내의 다른 요소를 찾아보세요. 🎜🎜🎜🎜🎜 6. geohash🎜🎜해시로 표시되는 하나 이상의 위치 요소입니다. 🎜rrreee🎜🎜🎜🎜 현재 위도와 경도를 나타내는 11자 Geohash 문자열을 반환합니다. 형식을 변경하고 2차원 경도와 위도를 1차원 문자열로 변환합니다. 🎜🎜위 구조에서 두 줄이 더 가까우면 두 위치 사이의 거리도 더 가까워진다는 점만 이해해 주세요. 🎜🎜geo의 기본 원칙은 여전히 ​​zset입니다. zset 명령을 사용하여 geo에서 도시를 제거하는 등의 geo 작업을 수행할 수 있습니다. 🎜rrreee🎜🎜🎜

위 내용은 Redis 특수 데이터 유형 지리공간을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제