

일반적인 데이터베이스는 컴퓨터 메모리, 하드 드라이브에 저장
하드디스크의 데이터를 엑세스하는 것은 비교적 느림.
데이터 크기 > 메모리 → 넣을 수 없음 → 하지만 해결 방법이 있지
모든 데이터를 단순한 구조로 관리하기 때문
연결 리스트, 정렬 세트, 해시 맵과 같은 고전적인 방법으로 저장한다.

일반적인 데이터베이스는 사용하기 편하게 다양한 기능이 추가되어있음 → 속도 저하

SET message Hi
'
'
"OK"
SET color red EX 2
'
'
"OK" -> 2초뒤 삭제
SET color red NX
'
'
null -> 이미 color라는 key가 존재하기때문에 실행 X
각 자료구조마다 SET 명령어가 조금씩 다름
MSET key1 value1 key2 value2 ... keyN valueN

Option
SET key value [EX | PX | EXAT | PXAT | KEEPTTL] [NX | XX] [GET]
XX : 키가 있을 때
NX : 키가 없을 때
EX : 만료시간 지정 (초)
PX : 만료시간 지정 (밀리초)
GET message
'
'
"Hi"
GETSET key value

GETDEL key

MGET key1 key2 ... keyN

GETRANGE key start end


너무 다양하기때문에 공식문서를 참고해보자.
Redis는 기본적으로 트랜잭션을 지원하지만, 그 방식은 전통적인 관계형 데이터베이스의 트랜잭션 처리 방식과는 약간 다릅니다.
WATCH 명령어는 옵티미스틱 락(Optimistic Locking)을 사용하여 특정 키가 변경되었는지 여부를 추적하고, 변경이 감지되면 트랜잭션을 취소합니다.
WATCH mykey # mykey가 변경되면 트랜잭션이 취소됩니다.
MULTI # 트랜잭션 시작
SET mykey "new_value" # 키의 값을 변경하려는 작업
EXEC # 트랜잭션 실행
Redis에서 분산 락을 사용하여 여러 클라이언트가 동시에 같은 리소스를 변경하는 것을 방지할 수 있습니다. 분산 락은 주로 SETNX (Set if Not Exists) 명령어 또는 RedLock 알고리즘을 통해 구현됩니다.
SET lock_key "lock_value" NX # lock_key가 존재하지 않으면 값을 설정하여 락을 획득
Redis는 기본적으로 동기화된 단일 스레드로 작동됨.
→ 동시에 다량의 요청을 받아도 순서에 따라 명령어를 하나씩 처리
ex) users:45, items:19, users:posts:9912, posts:kgqQnwr1W23R
ex) user#45, itesm#19, users:posts#9912, posts#kgqQnwr1W23R
나중에 검색을 편하게 하기 위한 방법. 내부적으로는 차이 X
→ 자주사용되는 HTML을 문자열로 저장하여 빠르게 응답으로 보내줄 수 있습니다.
ex) About Us, 로그인 페이지, 회원가입 페이지 등
동적인 데이터가 필요한 페이지는 캐싱하기에 적절하지않음!!
Redis는 빠른 읽기/쓰기가 가능하여 웹 애플리케이션에서 사용자 세션 정보를 관리하는 데 매우 유용합니다.
ex) 사용자가 로그인하면 Redis에 세션 정보를 저장하고, 사용자가 사이트를 돌아다닐 때마다 Redis에서 세션 정보를 확인합니다.
Redis는 자동으로 만료 시간을 설정할 수 있기 때문에 세션이 일정 시간 후에 자동으로 만료되도록 할 수 있습니다.
Redis는 랭킹 시스템을 관리하는 데 자주 사용.
ex) 게임에서 점수 순위를 저장하거나, 사용자의 활동에 따라 랭킹을 갱신하는 경우, Redis의 Sorted Set 자료구조를 사용하여 높은 점수부터 낮은 점수까지 빠르게 정렬하고, 이를 기반으로 순위를 표시할 수 있습니다.
오픈소스 인메모리 데이터베이스로, 주로 캐시 시스템, 세션 관리, 실시간 데이터 처리 등에서 사용됩니다. Redis는 기본적으로 다음과 같은 주요 기능을 제공합니다:
Redis의 확장판으로, Redis의 기본적인 기능에 다양한 애플리케이션 개발에 유용한 툴과 데이터 구조를 추가한 것입니다. Redis의 기본적인 기능 외에도 검색, 그래프, AI, JSON, 시간 시리즈 데이터 등의 고급 기능을 지원하는 여러 모듈이 포함되어 있습니다.

'
'
'
'
