Redis
- 오픈 소스 인메모리(in-memory) 데이터 저장소: 메모리에 저장&값을 읽기 때문에 디스크에서 읽는 것보다 훨씬 빠르다
(trade-off: 디스크에 저장하면 큰 용량 저장 가능 / 메모리는 용량 적으나 속도 빠름)
- Key-Value 데이터베이스 방식으로 동작하는 NoSQL 데이터베이스
- 빠른 속도와 유연성을 제공하여 대부분 SQL 데이터베이스와 함께 사용
- 캐싱(Cache), 세션 저장(Session Store), 메시지 브로커(Message Broker) 등의 용도로 많이 사용
Cashing(캐싱)
자주 사용되는 데이터를 더 빠른 저장소에 임시 저장 -> 성능 향상
ex) 온라인몰에서 상품 목록 페이지: 사용자가 방문할 때 마다 PostgreSQL과 같은 DB에서 데이터를 가져오면 시간 오래걸림!
첫번째 요청에서는 DB에서 데이터를 가져옴
이후 Redis에 저장한 후, 동일 요청에 대해서는 DB가 아닌 Redis에서 데이터를 가져옴(빠르다!)
Redis는 메모리(RAM)에 데이터를 저장하는 초고속 데이터베이스: 캐싱 용도로 많이 사용
메모리는 휘발되는데?
Redis가 데이터를 저장하는 방법
- RDB(Redis Database): 특정시점에 스냅샷을 찍어 데이터를 저장
- AOF(Append Only File): 모든 쓰기 연산(생성, 수정, 삭제)에 대해 로그파일에 기록 -> 서버 다시 시작되면 데이터 재구성
Redis 설치
Ubuntu 터미널에서 아래 명령어 실행
sudo apt update
sudo apt install redis
sudo service redis-server start

String 타입
- 하나의 키(Key)에 문자열(Value)를 저장
SET name "Dodo" # "name" 키에 "Dodo" 저장
GET name # "Dodo" 반환
SET count 10 # "count" 키에 10 저장
INCR count # count 값 11로 증가
DECR count # count 값 10으로 감소
APPEND name " Lee" # "name" 키에 " Lee" 추가
GET name # "Dodo Lee" 반환

List 타입
- 순서가 있는 리스트(Queue, Stack)
- 데이터를 앞(LPUSH) 또는 뒤(RPUSH)에 추가 가능
- 최대 40억 개의 요소 저장 가능
- LPOP/RPOP을 사용해 Queue 또는 Stack처럼 사용 가능
LPUSH fruits "Apple" # 리스트 왼쪽에 "Apple" 추가
RPUSH fruits "Banana" # 리스트 오른쪽에 "Banana" 추가
RPUSH fruits "Cherry" # 리스트 오른쪽에 "Cherry" 추가
LRANGE fruits 0 -1 # ["Apple", "Banana", "Cherry"]
LPOP fruits # "Apple" 제거
RPOP fruits # "Cherry" 제거
LRANGE fruits 0 -1 # ["Banana"]

'SQL' 카테고리의 다른 글
[SQL] MongoDB (0) | 2025.03.11 |
---|---|
[SQL] PostgreSQL Extensions (1) | 2025.03.11 |
[SQL] PostgreSQL JSON columns (0) | 2025.03.10 |
[SQL] Data Control Language (0) | 2025.03.10 |
[SQL] Transaction (0) | 2025.03.10 |