반응형
목적지 정보와 실시간 사용자 정보를 이용해서 거리차이를 확인하기 위해서 사용했습니다.
Spring에서 제공해주는 Point, Circle, Distance 클래스를 이용해서 쉽게 구현할 수 있었습니다.
org.springframework.data.geo
레디스 설정 클래스
geoOperations를 이용해서 이용하면 됩니다.!!
Point 클래스를 이용해서 좌표를 저장해주고 그값을 레디스에 저장만 해주면 됩니다.
- location.getName()은 이 값의 이름입니다.
- 이 이름을 통해서 거리차이를 구하는데 사용할 수 있고 반경을 조회할 때 이름을 활용할 수 있습니다.
km단위로 반경에 속한 값이 있는지 조회할 수 있습니다.
- Metrics클래스 단위가 m를 제공하지는 않는거 같아서 km로 처리하려고 합니다.
반경 몇 km에 어떤 사용자가 있는지만 조회하려는 용도이기 때문에 List<String>에는 사용자 이름 혹은 도착지 정보가 있습니다.
이전 글에서 보면 이벤트와 스케줄러를 이용해서 내기가 시작 되었다면 redis Key값이 저장되어 있습니다.
- Point class의 X값에는 경도를 Y값에는 위도를 넣어주어야 합니다.
- Redis에서 잘못된 위도 경도를 입력값으로 주면 예외가 발생하니 조심하세요!
- scan 명령어로 key가 존재하는지 확인하고 key가 있다면 사용자 위치정보를 저장한 뒤 목적지 거리의 차이를 응답하는 로직입니다.
- 레디스는 single thread이기 때문에 O(N)명령어를 쓰다보면 문제가 발생합니다. ➡️ Scan 명령어 사용하자
반응형
'개발' 카테고리의 다른 글
매직넘버, 리터럴 어디까지 상수 처리해야 돼? (4) | 2023.11.06 |
---|---|
1주 차 피드백을 2주 차 과제에 적용하기까지 (0) | 2023.11.01 |
원시 타입을 포장하자! (0) | 2023.10.31 |
Junit으로 Scanner, System.out.println() 테스트하기 (0) | 2023.10.25 |
spring Schedule + Event를 이용해서 redis Key값 넣어주기 (2) | 2023.10.06 |