Contents

GEOADD key longitude latitude member

  • 사용 가능한 버전 : 3.2.0
  • 시간 복잡도 : Sorted Set이다. 아이템이 N개 있을 때, 새로운 아이템을 추가할 때 O(log(N))
위도(latitude)와 경도(longitude)를 포함하는 지리정보 데이터를 지정된 키에 추가한다. 저장된 지리정보 데이터는 GEORADIUS, GEORADIUSBYMEMBER명령을 이용해서 검색 할 수 있다. 이 x, y를 인수로 취한다. 반드시 경도,위도 순서로 설정해야 한다.
  • 유효 경도는 -180에서 180
  • 유효 위도는 -85.05112878에서 85.05112878
범위를 벗어난 위/경도 값을 입력하는 경우 에러를 반환한다. 지리색인 구조는 정렬된 집합(sorted set)이다.

작동방식

Geohash라는 기술을 이용해서 정렬된 집합을 만든다. 위도와 경도는 유일한 52 bit 숫자를 가질 수 있으며, 우리는 이들 값이 정밀도를 읽지 않고 정렬될 수 있다는 것을 알 수 있다.

이 기술을 이용하면, 지도상에서 선택한 지점을 포함하는 Rectangle과 주변을 감싸는 8개의 영역을 확인 할 수 있다. 이제 반경을 설정하고, 반경 바깥에 있는 데이터를 삭제하는 것으로 반경 쿼리를 할 수 있다.

예제

redis> GEOADD Sicily 13.361389 38.115556 "Palermo" 15.087269 37.502669 "Catania"
(integer) 2
redis> GEODIST Sicily Palermo Catania
"166274.1516"
redis> GEORADIUS Sicily 15 37 100 km
1) "Catania"
redis> GEORADIUS Sicily 15 37 200 km
1) "Palermo"
2) "Catania"
redis>