Redis를 이용하여 최근 조회수 기반 인기공연 제공하기
·
Project
요구 사항 진행 중이던 프로젝트에서 실시간 인기 공연목록을 제공하기로 했다.인기 공연을 선정하는 방식은 최근 조회수를 기반으로 하여가장 높은 순으로 최대 10개의 공연을 선정했다.서비스가 작고 이용자가 많지 않았기 때문에완전한 실시간성을 보장하는 방식이 아닌 최근 조회수가 많은 공연을 제공하기로 했다.설계 과정조회수 증가우선 사용자가 공연을 누르면 해당 공연의 조회수를 증가시켜야 했다.당시 프로젝트에서 DB는 MySQL만 사용 중이었는데 이러한 단순한 조회수 증가를MySQL로 실행하기에는 DB의 부하가 많을 것이라 판단했다. @Overridepublic void incrementViewCount(Long performanceId) { longRedisTemplate.opsForList().leftP..
Redis 알아보기
·
Back-end
Redis란?Redis(Remote Dictionary Server)는 오픈 소스 기반의 고성능 키-값 저장소이며,메모리 내 데이터 구조 저장 및 검색을 위한 데이터베이스로 사용한다.단순한 문자열 저장뿐만 아니라 다양한 데이터 구조(리스트, 해시, 셋, 정렬된 셋 등)를지원한다.Redis를 사용하는 이유1. 빠른 성능레디스는 모든 데이터를 메모리에 저장하므로 디스크 I/O 오버헤드가 없다.이로 인해 매우 빠른 읽기와 쓰기 작업을 수행할 수 있다. 또한 단일 쓰레드 모델을 사용하여 데이터베이스 작업을 순차적으로 처리하므로복잡한 동시성 문제를 피할 수 있다. 2. 다양한 데이터 구조 지원일반적인 키-값 저장소가 단순한 문자열 저장만 지원하는 반면에Redis는 문자열, 리스트, 해시, 셋, 정렬된 집합 등 다..
[BOJ][Java] 2252번 줄 세우기
·
PS
문제 링크 : https://www.acmicpc.net/problem/2252 이 문제에서는 출력 조건에 답이 여러 가지인 경우에는 아무거나 출력한다는 것을 보고위상정렬 알고리즘을 사용한다는 것을 유추해 내면 이후에는 단순 알고리즘 구현문제로 바뀌게 된다. 먼저 위상정렬을 사용하려면 진입 차수에 대해 알아야 한다.진입 차수란 그래프로 표현했을때 자신에게 들어오는 간선의 개수이다.예제 입력 1번을 예로 살펴보면d (진입 차수 배열), List (인접 리스트)로 표현할 수 있다. 이때 위상정렬 알고리즘을 사용하려면 아래와 같이 하면 된다.Queue에는 진입 차수가 0인 정점들을 채워준다.이후 q에서 하나씩 빼면서 해당 정점을 출력해주고해당 정점과 인접한 정점의 진입 차수를 하나씩 빼준다. 1번 예제에서는 ..
[Spring] Dispatcher-Servlet 알아보기
·
Back-end/Spring
Servlet 란?디스패처 서블릿을 알아보기 전에 서블릿이 무엇인지 알아보자.서블릿이란 Java에서 웹 요청을 처리하고 응답을 생성하는 서버 측 프로그램이다.웹 서버(Tomcat 등)에서 동작하며, 클라이언트(웹 브라우저)로부터 요청을 받아 HTML,JSON 등의 응답을 생성하여 반환하는 역할을 한다.Dispatcher-Servlet이란?Spring MVC에서 클라이언트의 모든 요청을 받아 적절한 컨트롤러로 전달하고는 프론트 컨트롤러(Front Controller)이다.여기서 프론트 컨트롤러란 주로 서블릿 컨테이너의 제일 앞에서 서버로 들어오는 클라이언트의 모든 요청을 받아서 처리해 주는컨트롤러로서 , MVC 구조에서 함께 사용되는 디자인 패턴이다.Dispatcher-Servlet의 장점과거에는 모든 서..