용로그
article thumbnail
[Redis] Redis Sorted Set을 활용하여 랭킹 기능 구현하기
Spring Data/Redis 2023. 11. 12. 17:49

들어가며 현재 사이드 프로젝트 겸 플레이 그라운드 프로젝트에 랭킹 기능을 도입하려고 합니다. 해당 랭킹 기능은 미션 별 step 내림차순입니다. 위 기능을 구현하는 도중 레디스의 Sorted-Set 자료구조를 이용하면 key-value 중복 제거 기능으로 간편하게 구현할 수 있으며, 조회 성능은 폭발적으로 증가시킬 수 있을 것 같았습니다. 참고로 미리 구현한 기능의 응답 시간입니다. 유저 한 명의 요청을 처리하는 데 389ms의 시간이 걸리는 상황입니다. Redis Sorted Set(Zset) 레디스는 다양한 형태의 자료 구조를 제공합니다. 기본적으로 key-value 형태의 구조를 띄며, value가 사용하는 자료 구조에 따라 기능을 사용할 수 있습니다. Sorted Set은 이름에서 알 수 있듯이 ..

article thumbnail
[Spring] 로컬 캐시(Local Cache) 도입으로 성능 개선하기
Spring Framework 2023. 11. 9. 16:43

들어가며 집사의 고민 서비스의 기능 개발이 거의 마무리되면서 기존 코드 또는 기능의 퀄리티를 올리기 위한 작업 중 캐시를 적용하자는 의견이 나왔습니다. 이번 글에서는 집사의 고민 팀에서 사용하는 캐시와 분석한 내용을 공유하려고 합니다. 캐시는 웹사이트, 브라우저, 앱이 더 빠르게 로드되도록 돕기 위해 데이터를 임시로 저장해 놓은 공간입니다. 요청한 데이터를 캐시에서 찾을 수 있으면 Cache Hit, 찾을 수 없다면 Cache Miss가 발생합니다. 글로벌 캐시 vs 로컬 캐시 글로벌 캐시(Global Cache) 서버가 여러대로 분산되어 있는 분산 환경에서 적합한 캐시 전략입니다. 당연하게도 별도의 캐시 서버를 두고 공유하여 사용하기 때문에 서버 간 데이터 공유가 쉽다는 장점이 있습니다. 반면, 로컬캐..

article thumbnail
[Spring Boot, Database] Spring Boot + Redis 제대로 활용하기(2)
Spring Framework 2023. 1. 18. 19:44

저번 포스팅에서는 레디스라는 데이터베이스 자체에 대해서 자세히 알아보았다. 이번 포스팅에서는 스프링 부트에서 레디스를 사용하는 법을 알아보자. Spring Boot에서 레디스 설정하기 스프링 부트에서 레디스를 사용하려면 build.gradle 파일에 레디스 의존성을 추가해줘야 한다. implementation 'org.springframework.boot:spring-boot-starter-data-redis' 그리고 사용할 레디스의 호스트와 포트를 지정해준다. application.yml 파일에 지정하며, 로컬에서 레디스를 사용한다면 localhost, 다른 서버나 도커 등을 사용한다면 그에 맞는 호스트로 설정해준다. default port는 6379이다. spring: redis: host: loca..