Set User:1 anna
// Table:PK value(네이밍 규칙)
Get User:1 // -> 출력: anna
Set User:2 Kim
expire User:2 30 // 30초뒤 만료
// 위 명령어 이후 10초 경과 가정 시
ttl User:2 // 출력 20
// 위 명령어 이후 21초 경과 가정 시
ttl User:2 // 출력 -2 -2는 만료됌 혹은 없는 값을 의미
tta User:1 // 출력 -1 -1은 만료시간이 없는 경우 출력
// 만료 시간 한번에 지정 PX는 ms 단위, EX가 s 단위
SET User:3 PX 5000
// NX와 XX
SET User:4 hello // User:4 의 val는 hello
SET User:4 world NX // User:4 의 val는 hello , NX는 Key의 값이 이미 존재시 저장X.
SET User:5 redis NX // User:5 의 val는 redis
SET User:5 spring XX // User:5 의 val는 spring. XX는 Key가 존재시 Update
SET User:6 spring XX //User:6는 (nil)
Redis는 다양한 자료형(String, List, Set 등)을 지원한다.
가장 기본 타입은 String이며, 숫자도 문자열 형태로 저장된다.
단, 숫자 형태의 문자열은 내부적으로 정수로 처리되어 증가/감소 연산이 가능하다.
Redis의 List Linked List기반으로 pointer로 논리적 연결로 생각하자.!
lpush

// 내부 처리 과정
[1]
[2,1]
[3,2,1]
[4,3,2,1]
[5,4,3,2,1]
그래서 lpop을 하게 된다면 5가 나온다!
- LPUSH + LPOP = Stack
- LPUSH + RPOP = Queue
rpush
rpush rightUser 1 2 3 4 5
// 값을 오른쪽(Tail) 에 순서대로 삽입
// 입력 순서 그대로 유지됨
// 내부 처리과정
[1]
[1,2]
[1,2,3]
[1,2,3,4]
[1,2,3,4,5]

이때 맨 왼쪽을 Pop하면 -> 1
• RPUSH + LPOP = Queue
• RPUSH + RPOP = Stack
SADD myset 1 2 3 4 5
SADD myset 8 9 10
SADD myset 9 // 중복 → 추가 안 됨
SADD yourset 7 1 4 5 8
// 차집합
SDIFF myset yourset //출력 : 2 3 9 10
// 교집합
SINTER myset yourset // 출력 : 1 4 5 8
// 합집합
SUNION myset yourset // 출력 : 1 2 3 4 5 7 8 9 10
HSET users:1 id 1 name daul age 31 marketing true
HGET users:1 name
HGETALL users:1
ZADD myzset 1 a 2 b 3 c 4 d 5 e
// 조회
ZRANGE myzset 0 -1
ZINCRBY myzset 5 a // a 점수 : 6
ZINCRBY myzset -4 a //a 점수 : 2