DBMS/Redis

DBMS/Redis

[Redis] Redis TTL/락 시간 불일치 문제 & TTL 만료 후 userId 조회 실패 & ExpireAt 개선

1. 문제 상황 : 좌석 선점 시스템을 Redis로 구현하다가 발생한 문제들 프로젝트에서 좌석 선점 기능을 Redis를 활용해서 구현하고 있었다. 처음에는 다음과 같은 방식으로 간단하게 설계를 했다.사용자가 좌석을 선점하면 Redis에 seat-hold:{sessionId}:{seatId}라는 키를 생성이 키에 사용자 ID를 저장하고, TTL(Time To Live)을 5분 설정동시에, Redisson을 사용해 좌석 락(lock) 을 걸어 선점 중복을 방지더보기처음 설계했던 흐름-> Redisson 락 획득-> Redis에 userid 저장-> Redis에 5분 TTL 설정-> 락 해제이렇게 구성하면 "5분 내에 결제를 완료하지 못하면 좌석이 자동으로 풀리겠지"라고 단순히 생각했다. 하지만... 2. ..

DBMS/Redis

[Spring Boot + Redis 캐싱] 좌석 목록 조회 캐싱 리팩토링 & 역직렬화 이슈 해결기

1. 기존 구현 방식기존의 회차별 좌석 조회는 DB + Redis를 조합해서 조회하는 로직이다. 즉, 특정 sessionId 공연 회차의 모든 좌석을 조회하되, 좌석의 상태는 Redis 값을 우선시해서 보여주는 것이다. //해당 회차별 좌석 목록 조회 @Override public List getSeatBySession(UUID sessionId) { SessionId session = new SessionId(sessionId); //DB에서 특정 sessionId에 해당하는 모든 좌석 가져오기 //상태는 DB의 p_seats 테이블에서 가져온 기본 상태 List seats = seatRepository.findAllBySession..

DBMS/Redis

[Redis] redis를 Spring Boot에 추가

1. Spring Boot 프로젝트에 Redis 셋팅 추가✅ Spring Boot 프로젝트에 Redis 셋팅 추가하기1. Redis 의존성 추가하기build.gradledependencies { ... implementation 'org.springframework.boot:spring-boot-starter-data-redis'} 2. application.yml 수정하기jpa: hibernate: ddl-auto: update show-sql: true data: redis: host: localhost port: 6379logging: level: org.springframework.cache: trace # Redis 사용에 대한 로그가 조회..

DBMS/Redis

[Redis] Redis 캐싱 전략

1. 캐시(Cache), 캐싱(Caching)이란 ??!✅ 캐시(Cache)란?캐시(Cache)란, 원본 저장소보다 빠르게 가져올 수 있는 임시 데이터 저장소를 의미한다.  참고로 캐시(Cache)라는 단어는 Redis에서만 쓰이는 용어는 아니고 전반적인 개발 분야에서 통용돼서 쓰인다. ✅ 캐싱(Caching)이란?캐싱(Caching)이란 캐시(Cache, 임시 데이터 저장소)에 접근해서 데이터를 빠르게 가져오는 방식을 의미한다.현업에서는 아래와 같이 얘기하는 편이다.“이 API는 응답 속도가 너무 느린데? 이 응답 데이터는 캐싱(Cahing) 해두고 쓰는 게 어때?’이 말을 풀어서 설명하자면 ‘API 응답 결과를 원본 저장소보다 빠르게 가져올 수 있는 임시 데이터 저장소에 저장해두고, 빠르게 조회할 수..

DBMS/Redis

[Redis] 기본 명령어

✅ 데이터(Key, Value) 저장하기# set [key 이름] [value]$ set chae:name "chaew kim" # 띄워쓰기 해서 저장하려면 쌍따옴표로 묶어주면 됨$ set chae:hobby running✅ 데이터 조회하기 (Key로 Value 값 조회하기)# get [key 이름]$ get chae:name$ get chae:hobby$ get pjs:name # 없는 데이터를 조회할 경우 (nil)이라고 출력됨✅ 저장된 모든 key 조회하기$ keys *✅ 데이터 삭제하기 (Key로 데이터 삭제하기)# del [key 이름]$ del chae:hobby$ get chae:hobby # 삭제됐는 지 확인✅ 데이터 저장 시 만료시간(TTL) 정하기레디스는 RDBMS와는 다르게 데이터 저..

DBMS/Redis

[Redis] Redis란?, 설치

✅ Redis란?Redis의 의미를 인터넷에 검색해보면 아래와 같이 나온다.레디스(Redis)는 Remote Dictionary Server의 약자로서, “키-값” 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비관계형 데이터베이스 관리 시스템(DBMS)이다.위키백과 -너무 어렵게 적혀져있다. First Word 법칙에 따라 쉽게 바꿔서 이해해보자.Redis는 데이터 처리 속도가 엄청 빠른 NoSQL 데이터베이스이다.이렇게 기억하고 있어도 충분하다. NoSQL 데이터베이스를 풀어서 얘기하자면 Key-Value의 형태로 저장하는 데이터베이스라고 생각하면 된다. https://redis.io/nosql/key-value-databases/✅ Redis의 장점Redis는 다양한 장점을 가지고..

챛채
'DBMS/Redis' 카테고리의 글 목록