Computer >> 컴퓨터 >  >> 프로그래밍 >> Redis

Redis GEOADD – 지리 공간 값에 요소를 생성하고 추가하는 방법

이 튜토리얼에서는 키에 저장된 지리 공간(geospatial) 값에 요소를 생성하고 추가하는 방법을 알아봅니다. 이를 위해 Redis의 GEOADD 명령어를 사용합니다.

GEOADD 명령어란?

GEOADD 명령어는 키에 저장된 지리 공간 값에 하나 이상의 지정된 지리 공간 멤버를 추가하는 데 사용됩니다. 지리 공간 값은 사실상 정렬된 집합(sorted set)으로, 이 명령어를 통해 데이터가 채워집니다. 지리 공간 멤버는 GEORADIUSGEORADIUSBYMEMBER 명령어를 활용한 반경 기반 조회를 통해 나중에 손쉽게 검색할 수 있도록 정렬된 집합에 추가됩니다.

정렬된 집합은 Geohash라는 기술을 사용하여 채워집니다. 이 기술에서는 위도와 경도의 비트를 교차 배치(interleaving)하여 고유한 52비트 정수를 만들어냅니다. 이 고유한 52비트 정수는 정렬된 집합에서 멤버 이름의 점수(score)로 저장됩니다.

지리 공간 멤버는 위치에 관한 세 가지 정보, 즉 경도(longitude), 위도(latitude), 이름(name)을 포함합니다. 따라서 이 명령어는 지리 공간 멤버 하나를 추가하기 위해 세 개의 인수를 받으며, 순서대로 경도 좌표 → 위도 좌표 → 이름 값을 입력해야 합니다.

지리 공간 값에 추가할 수 있는 좌표(경도, 위도) 값에는 제한이 있습니다. EPSG:900913 / EPSG:3785 / OSGEO:41001에서 규정한 정확한 좌표 범위는 다음과 같습니다.

  1. 유효한 경도 범위: -180도 ~ 180도
  2. 유효한 위도 범위: -85.05112878도 ~ 85.05112878도

명령어가 이 범위를 벗어나는 좌표를 추가하려고 하면 오류가 반환됩니다.

키가 데이터 저장소에 이미 존재하는 경우, 지정된 모든 요소가 추가되지만 이미 존재하는 요소는 점수만 업데이트됩니다. 반면 키가 존재하지 않으면 삽입 작업을 수행하기 전에 새로운 정렬된 집합이 먼저 생성됩니다.

구문

redis host:port> GEOADD <keyname> <longitude> <latitude> <name> [longitude latitude name]

반환값

- (integer): 정렬된 집합에 새로 추가된 요소의 개수
  (이미 존재하여 점수만 업데이트된 요소는 제외)
- Error: 키가 존재하지만 해당 키에 저장된 값이
  GEOADD로 생성된 정렬된 집합이 아닌 경우

예제

Redis GEOADD – 지리 공간 값에 요소를 생성하고 추가하는 방법

참고 자료

  1. GEOADD 공식 문서

지금까지 Redis 데이터 저장소에 저장된 지리 공간 값에 요소를 생성하고 추가하는 방법을 알아보았습니다. 이 글이 도움이 되었다면 댓글로 의견을 남겨주시고, 주변에도 널리 공유해 주세요!

<- Geo 명령어 목록