박재성 8

[Redis] Cache Aside, Write Around 전략의 한계점 / 해결 방법

Cache Aside, Write Around 전략의 한계점 / 해결 방법 | 캐시된 데이터와 DB에 저장된 데이터의 불일치 Cache Asdie와 Write Around 전략을 같이 썼을 때의 한계점 중 하나는 캐시된 데이터와 DB 데이터가 일치하지 않을 수 있다는 점이다즉, 데이터의 일관성 보장 할 수 없다 예를들어 블로그명을 `A` -> `B`로 변경했으나, 여전히 A인 경우이다.생각해보면 데이터베이스에는 B로 변경됐지만, 조회는 캐시에 저장해 두어 여전히 A로 노출되는 상황(= 데이터 불일치)  💡 그렇다면, DB와 레디스에 모두 업데이트하면 될까? 아니다. 캐시는 메모리(RAM)에 저장되기 때문에 디스크보다 용량이 작다.  | 해결방법1. 캐시를 적용시키기에 적절한 데이터를 정한다.자주 조회되..

DBMS/Redis 2024.11.03

[Redis] 데이터 캐싱 전략(Cache Aside, Write Around)

Cache Aside (= Look Aside, Lazy Loading) 전략데이터를 조회할 때 주로 사용레디스에서 먼저 조회하고, 없으면 데이터베이스에서 조회하고 & 레디스에 저장하는 전략캐시에 데이터가 있을 경우(= Cache Hit)캐시에 데이터가 없을 경우 (= Cache Miss) ▼ 게시판 서비스를 예제로 Cache Aside 작동 방식을 이해하기더보기처음 게시판 서비스를 배포했기 때문에 데이터베이스와 레디스에는 아무런 데이터도 저장이 안 되어 있음신규 게시글 작성으로 데이터 저장데이터베이스에 저장(레디스 저장 x)사용자가 데이터를 조회하려고 요청이 때, 레디스부터 조회레디스에 데이터가 없다면(= Cache Miss), 데이터베이스에서 데이터 조회해서 응답데이터베이스로부터 조회한 데이터를 응답..

DBMS/Redis 2024.11.03

[Redis] 캐시(Cache), 캐싱(Caching) 이란?

캐시(Cache)원본 저장소보다 더 빠르게 가져올 수 있는 *임시 데이터 저장소* 데이터를 임시로 복사해두는 Storage 계층 💡 우리 주변에서 볼 수 있는 Cache 사례DNS : 웹사이트 IP 를 기록해두어 웹사이트 접근을 위한 DNS 조회 수를 줄인다.CPU : 자주 접근하는 데이터의 경우, 메모리에 저장해두고 빠르게 접근할 수 있도록 한다.CDN : 이미지나 영상과 같은 컨텐츠를 CDN 서버에 저장해두고 애플리케이션에 접근하지 않고 컨텐츠를 가져오도록 해 부하를 줄인다.  캐싱(Caching)캐시(임시 데이터 저장소)에 접근하여, 데이터를 빠르게 가져오는 방식

DBMS/Redis 2024.11.03

[Redis] 키(key) 네이밍 컨벤션

현업에서 자주 활용하는 네이밍 컨벤션회사마다 여러가지 컨벤션이 존재하겠지만 딱 한가지만 기억하자.  | 계층 활용콜론(:)을 활용해 계층적으로 의미를 구분해서 사용users:100:profile : 사용자들(users) 중에서 PK가 100인 사용자(user)의 프로필(profile)products:123:details : 상품들(products) 중에서 PK가 123인 상품(product)의 세부사항(details) | 해당 컨벤션의 장점가독성 : 데이터의 의미와 용도를 쉽게 파악할 수 있다.일관성 : 컨벤션을 따름으로써 코드의 일관성이 높아지고 유지보수가 쉬워진다.검색 및 필터링 용이성 : 패턴 매칭을 사용해 특정 유형의 Key를 쉽게 찾을 수 있다 .확장성 : 서로 다른 Key와 이름이 겹쳐 충돌할..

DBMS/Redis 2024.11.03

[Redis] 기본 명령어

Redis 기본 명령어 | redis 데이터 저장/조회 명령어# 데이터 저장 (키 : whee, 값 : in the mood)127.0.0.1:6379> set whee:name "in the mood" // 띄워쓰기가 있을 땐 "" 사용OK# 데이터 저장 (키 : job, 값 : singer)127.0.0.1:6379> set whee:job singerOK# 데이터 조회127.0.0.1:6379> get whee:name"in the mood"# 데이터 조회127.0.0.1:6379> get whee:job"singer" | 저장된 모든 키 정보 보기127.0.0.1:6379> keys *1) "whee:job"2) "whee:name" | 저장된 키 삭제# 특정 키 삭제127.0.0.1:6379> ..

DBMS/Redis 2024.11.03

[Redis] Redis 실행 & 접속 명령어

Redis 실행 & 접속 명령어 | Redis 서비스 실행 및 중지# redis 실행$ brew services start redis==> Successfully started `redis` (label: homebrew.mxcl.redis)# redis 실행 정보 확인$ brew services info redis아래 실행 전/후 참고# reids 중지$ brew services stop redis# 실행 전redis (homebrew.mxcl.redis)Running: ✘Loaded: ✘Schedulable: ✘# 실행 후$ brew services info redisredis (homebrew.mxcl.redis)Running: ✔Loaded: ✔Schedulable: ✘User: {유저이름}PID..

DBMS/Redis 2024.11.03

[Redis] Redis 주요 사용 사례 - 캐싱이 키워드

Redis 주요 사용 사례레디스에 내장된 기능이 다양하여, 여러 용도로 사용된다. | 주요 사용 사례캐싱 (Caching) -> 집중 학습 키워드세션 관리 (Session Management)실시간 분석 및 통계 (Real-time Analystics)메시지 큐 (Message Queue)지리공간 인덱싱 (Geospatial Indexing)속도 제한 (Rate Limiting)실시간 채팅 및 메시징 (Real-time Chat And Messaging)캐싱(데이터 조회 성능 향상)의 사례를 학습하다보면 자연스럽게 레디스의 기본 기능들이 익혀진다.

DBMS/Redis 2024.11.03

[Redis] Redis란?

| 들어가며.. 대용량 트래픽 처리 경험, Redis 사용 경험백엔드 개발자 채용 공고를 보면 `대용량 트래픽`, `NoSQL`에 관한 얘기가 자주 등장한다.서비스가 점점 고도화 될 수록 빼놓을 수 없는 역량이기 때문이다. 이 두 가지를 채울 수 있는 방법 중 하나가 Redis이다. 대용량 트래픽 처리하기 위해서 필수적으로 사용되는 기능이 `Redis 캐싱` 기능이다.+ NoSQL의 일종으로 아주 적절한 학습 주제이다. Redis데이터 처리 속도가 엄청 빠른 *NoSQL 데이터베이스* NoSQL : key - value 형태로 저장하는 데이터베이스 | 장점`인메모리`에 모든 데이터를 저장하기 때문에 데이터 처리 성능이 굉장히 빠르다.이유는, 디스크 보다 메모리의 데이터 처리 속도가 월등히 빠르기 때문이다..

DBMS/Redis 2024.11.03