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

Redis Jedis – Jedis 라이브러리로 지리 공간(Geo) 값에 대한 CRUD 작업 수행하기

이 튜토리얼에서는 Jedis 라이브러리를 사용하여 지리 공간(Geo) 값에 대해 CRUD 작업을 수행하는 방법을 알아봅니다.

Jedis 라이브러리란?

Jedis는 Redis 데이터 저장소를 위한 Java 클라이언트 라이브러리입니다. 가볍고 사용하기 매우 쉬우며, Redis 2.8.x, 3.x.x 이상 버전과 완벽하게 호환됩니다. Jedis 라이브러리에 대한 자세한 정보는 GitHub 공식 저장소에서 확인할 수 있습니다.

지리 공간 값(Geo Value)이란?

지리 공간 값은 지구상 특정 위치의 경도(longitude)와 위도(latitude) 좌표를 포함하는 데이터입니다. Redis에서는 지리 공간 요소를 키에 저장된 정렬된 집합(Sorted Set) 형태로 저장하며, 다양한 Redis 전용 명령어를 통해 지리 공간 값을 손쉽게 저장, 관리, 조회할 수 있습니다. Geo 명령어에 대한 자세한 내용은 Redis 공식 문서를 참고하세요.

프로젝트 설정

선호하는 IDE에서 간단한 Maven 프로젝트를 생성한 후, pom.xml 파일에 아래 의존성을 추가합니다.

<dependency>
  <groupId>redis.clients</groupId>
  <artifactId>jedis</artifactId>
  <version>3.0.1</version>
</dependency>

Jedis 라이브러리의 최신 버전은 Maven Central Repository에서 확인할 수 있습니다.

Redis 설치

실습을 위해서는 최신 버전의 Redis가 설치되어 있어야 합니다. 운영체제별 설치 방법은 Redis 공식 문서를 참고하세요.

Jedis 연결

Java 코드를 Redis 서버에 연결하려면 Jedis(redis.clients.jedis.Jedis) 클래스의 객체를 생성합니다.

Jedis jedis = new Jedis();

로컬 머신에서 기본 포트(6379)로 Redis 서비스를 실행 중이라면 기본 생성자만으로 충분합니다. 그렇지 않은 경우에는 올바른 호스트 주소와 포트 번호를 생성자의 인자로 전달해야 합니다.

생성 및 추가(Create & Add)

geoadd 메서드는 키에 저장된 지리 공간 값(정렬된 집합)에 하나 이상의 지리 공간 멤버를 추가할 때 사용합니다.

/* <geo-1> 키에 런던(London) 좌표 삽입 */
jedis.geoadd("geo-1", 51.5074, 0.1278, "London");

/* <geo-2> 키에 런던과 파리(Paris) 좌표 한 번에 삽입 */
Map<String,GeoCoordinate> map = new HashMap<String, GeoCoordinate>();		
map.put("London", new GeoCoordinate(51.5074, 0.1278));
map.put("Paris", new GeoCoordinate(48.8566, 2.3522));
jedis.geoadd("geo-2", map);

단일 멤버를 추가할 때는 경도와 위도를 개별 인자로 전달하고, 여러 멤버를 한 번에 추가할 때는 GeoCoordinate 객체를 담은 Map을 사용하면 편리합니다.

좌표 조회(Get Geo Coordinate)

geopos 메서드는 키에 저장된 지리 공간 값(정렬된 집합)에서 하나 이상의 멤버에 해당하는 좌표(경도, 위도)를 조회할 때 사용합니다.

/* <geo-1> 키에서 런던과 파리의 좌표 반환 */
List geoCoordinates = jedis.geopos("geo-1", "London", "Paris");

GeoHash 조회

geohash 메서드는 키에 저장된 지리 공간 값(정렬된 집합)에서 하나 이상의 멤버에 해당하는 유효한 Geohash 문자열을 조회할 때 사용합니다. Geohash는 위치 데이터를 짧은 문자열로 인코딩하여 효율적으로 저장·공유할 수 있는 방식입니다.

/* <geo-1> 키에서 런던과 파리의 GeoHash 문자열 반환 */
List geoStrings = jedis.geohash("geo-1", "London", "Paris");

두 멤버 간 거리 계산

geodist 메서드는 키에 저장된 지리 공간 값(정렬된 집합)에서 두 멤버 간의 거리를 지정한 단위로 계산합니다. 거리 단위는 m(미터), km(킬로미터), mi(마일), ft(피트) 중에서 선택할 수 있습니다.

/* <geo-1> 키에서 런던과 파리 간 거리를 킬로미터 단위로 반환 */
Double distance = jedis.geodist("geo-1", "London", "Paris", GeoUnit.KM);

참고 자료

  1. Redis 공식 문서 – Geo 명령어(GEOADD, GEOPOS, GEOHASH, GEODIST)

지금까지 Jedis 라이브러리를 사용하여 Redis의 지리 공간 값에 대해 CRUD 작업을 수행하는 방법을 알아보았습니다. 글이 도움이 되었다면 댓글로 의견을 남겨주시고, 주변 분들께도 공유해 주세요!