본문 바로가기

Spring

(Versioning)단일 캐시들을 저장하는 Redis 캐시 서버 개선 시도들 (2) 이전 페이지 : 단일 캐시들을 저장하는 Redis 캐시 서버 개선 시도들 (1) (리스트)단일 캐시들을 저장하는 Redis 캐시 서버 개선 시도들 (1) 문제 상황 캐시 서버를 구현하는 프로젝트를 진행하는 중의 문제가 발생 캐시의 Key 값으로 요청의 Path + QueryString 형태를 사용 캐시의 Metadata 값(Expired Time)은 Path를 기준으로 관리 Path에 대한 Expire yatanox.tistory.com 문제 상황 만료 시간 수정 시 기존 활성화 캐시 처리에 대한 문제가 있었다. 조회 속도를 너무 해치지 않는 선에서 성능을 개선해야한다. 리스트를 사용하여 목록화 시도 캐시들이 한 리스트 캐시에 만료 시간이 묶여서 각기 만료 시간이 관리되지 않기에 실제 캐시들을 따로 운용.. 더보기
(리스트)단일 캐시들을 저장하는 Redis 캐시 서버 개선 시도들 (1) 문제 상황 캐시 서버를 구현하는 프로젝트를 진행하는 중의 문제가 발생 캐시의 Key 값으로 요청의 Path + QueryString 형태를 사용 캐시의 Metadata 값(Expired Time)은 Path를 기준으로 관리 Path에 대한 Expired Time이 변경될 때 기존의 활성화 되어있는 Key들을 찾아서 삭제 혹은 갱신을 해야하거나 Path별 활성화된 캐시들 목록을 조회 해야하는 등의 상황 Redis에서 특정 목록들을 검색할 때 Scans를 이용해서 검색하는데 특정 패턴의 Key들을 조회하는 방식이다보니 기본적으로 전체 조회를 하게된다. 만료시간 수정 한 번을 위해 무수한 캐시들을 전체 조회하는 것은 성능적으로 매우 낭비인 상황 해결 시도 1번 리스트 등의 자료구조를 활용하기 캐시 생성 / 만.. 더보기
[Spring]Redis 연결 (RedisTemplate) 프로젝트 진행 중 캐시 서버 구현을 위해 Redis를 사용해야하는 상황이 발생했다. Redis란? RDBMS와는 다른 Key-Value형태로 이루어진 비관계적, 비정형적 데이터 관리 시스템. 레디스 내부에서 명령어를 처리하는 부분은 싱글 스레드 아키텍처로 구현 Redis를 사용하면 사용자가 다양한 데이터 유형에 매핑되는 키를 저장할 수 있다. 기본적인 데이터 유형은 String으로서, 텍스트 또는 이진 데이터가 이에 해당하며 최대 크기는 512MB. 아래와 같은 것들을 지원한다. Redis는 문자열이 추가된 순서대로 유지되는 Lists of Strings, Sets of unordered Strings 점수에 따라 정렬되는 Sorted Sets, 필드와 값 목록을 저장하는 Hashes 데이터 세트에서 고.. 더보기
Spring Boot init.sql.mode 사용시 쿼리 누락 문제(주석) 인텔리제이로 팀 프로젝트를 진행하던 때 mysql 더미 데이터를 만들어 init.sql.mode로 실행할 때 삽입하는 작업을 진행하고 있었다. 그러다가 하나의 쿼리문이 실행되지 않는 문제가 발생했다. 사진으로 예를 들자면 위의 visa 테이블의 D-2 Tuple이 삽입되지 않는 문제 였다. 순간의 오류인가 싶어 인텔리제이를 재시작해보기도하고, 데이터베이스를 다시 로드해보기도 했으며, 코드의 위치를 바꿔보기도했다. 그러나 오류가 해결이 되지 않았다. 이리저리 시도하던 중 몇 가지 이상함을 발견했다. 1. H-2와 D-2의 순서를 바꾸면 H-2가 안나오고 E-9와 바꾸면 E-9가 안나왔다. (즉 첫 순서의 쿼리가 나오지 않았다.) 2. 각 테이블의 첫 쿼리들이 전부 들어가지 않았다. 3. 작성 쿼리의 일부를.. 더보기