(TIL) 20221011/Redis 데모 프로젝트

2022. 10. 13. 00:55TIL(Today I learned)

반응형

🏴󠁩󠁤󠁪󠁷󠁿Facts(한 것) & Findings(배운 것)


 

알고리즘 문제를 몇개 풀었다.

 

힙, DP 문제 몇개를 두고 한 두시간 씨름을 하니 3시였다.

 

힙 문제는 최소힙 문제다.

 

 

1927번: 최소 힙

첫째 줄에 연산의 개수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 연산에 대한 정보를 나타내는 정수 x가 주어진다. 만약 x가 자연수라면 배열에 x라는 값을 넣는(추가하는) 연산이고, x가 0

www.acmicpc.net

 

예전에 C++로 풀었을 때는 <queue>라이브러리에 priority_queue가 정의되어 있었기 때문에 푸는데 10분도 안 걸렸었다.

 

 

문제는 파이썬인데, 나는 Heapq를 써서 풀고 싶지 않았다.

 

적절한 알고리즘을 찾아서 문제를 풀었는데, 계속 시간초과가 발생해서 어쩔 수 없이 Heapq를 사용해서 풀었다.

 

파이썬의 Heapq는 최대힙 정렬이 없어서, 힙에다가 다시 -를 넣어서 정렬한 뒤 숫자를 꺼내는

 

아주 불편한 방식으로 사용해야한다. (그래도 여전히 코드는 C++보다 짧다)

 


Redis를 실제로 오늘 처음 구축해서 사용했다.

 

RedisConfig를 만들지 않고, 간단하게 사용하는 방식으로 구현했다.

 

 

GitHub - mikekang47/spring-data-redis-example

Contribute to mikekang47/spring-data-redis-example development by creating an account on GitHub.

github.com

 

spring data redis를 사용해서 구현했고,

 

cacheable 어노테이션을 활용해서 만들었다.

 

 

 

위처럼 캐시를 사용하지 않으면 이렇게 조회할 때마다 계속 쿼리가 날라간다.

 

간단한 쿼리더라도 네트워크를 타는 순간 다 비용이기 때문에 캐시를 활용하는 것이 무조건 좋다.

 

 

 

위 스크린샷은 get 요청을 6-7번 정도 보낸 콘솔창으로, 

 

한 번의 조회 이후 쿼리가 날라가지 않은 것을 알 수 있다.

 

 

 

 

캐시 외에도 이 간단 프로젝트는 예외처리를 확장성에 기가막히도록 구성했기 때문에

 

 

예외처리에 어려움을 겪는 분은 참고하면 좋을 것 같다.

 

 

 

🏴󠁩󠁤󠁪󠁷󠁿Affirmation(자기 선언)


  • 코틀린 || 스프링 || 리액트 강의 듣기 -> 성공
  • Goole k8s 강의 듣기 -> 실패
  • 알고리즘 문제 풀기 -> 성공

🏴󠁩󠁤󠁪󠁷󠁿여담


 
반응형