[ docker-compose.yml ]
version: '3'
services:
redis:
container_name: redis
hostname: redis
image: redis:6.2
ports:
- 6379:6379
> docker-compose up
> docker exec -it redis bash
> redis-cli
set a 10
get a
del key
del key1 key2 key3
keys *
flushdb
3초후 만료되는 key-value 쌍 생성
set key 10 ex 3
-1: 만료시간이 설정되지 않은 경우
-2: 만료된 경우
0: 만료까지 남은 시간
ttl key
set a b nx => key a에 값이 있는 경우 수정 X (기존 값이 없다면 값을 세팅)
set a b xx => key a에 값이 있는 경우 수정 O (기존 값이 없다면 변경 X)
exists key
1 or 0
set a 10
incr a # 1증가
get a # "11"
decr a # 1갑소
set a 10
incrby a 10 # 10증가
get a # "20"
decrbt a 10 # 10감소
hset user:1 name kim age 27 city bucheon # 초기화
hget user:1 name # "kim"
hget user:1 age # "27"
hdel user:1 name # name 삭제
hgetall user:1 # key-value 모두 조회
hkeys user:1 # key만 조회
hvals user:1 # value만 조회
rpush
-> lpop
구조로 Queue
자료구조와 같이 동작하도록 한다. (FIFO)
rpush queue 1 2 3
llen queue # "#"
lpop queue
lpop queue
lpop queue
rpush queue 1 2 3 4 5
llen queue "5"
lrange queue 0 -1 # 처음부터 끝까지 조회
lrange queue 0 0 # 0번째 조회
lpush
-> lpop
(LIFO)
lpush stack 1 2 3
lpop stack # "3"
lpop stack # "2"
lpop stack # "1"
조회는 동일
Set
은 순서를 유지하지 않고 중복을 허용하지 않는 자료구조이다.
sadd set 1 1 2 2 3 3 1 1
scard set # set의 크기 확인 =>"3" (1 2 3)
smembers set # set의 모든 원소 ㅈ회
sadd set 1 2 3
sismember set 1 # 1이 set에 존재하는지 확인
srem set 1 # 1을 set에서 삭제 (remove)
spop set # set에서 랜덤하게 한 개 원소를 pop
가중치를 이용해서 순서를 유지하는 Set
이다.
랭킹 기능을 구현할 때 사용하면 좋을 것 같다.
zadd name [가중치1] [key1] [가중치2] [key2] ...
default 는 가중치 기준 오름차순이다.
zadd 30 a 10 b 15 c
zrange zadd 0 -1
# b -> c -> a 순 출력
zadd 30 a 10 b 15 c
zrange zadd 0 -1 rev
# a -> c -> b 순 출력
zadd 30 a 10 b 15 c
zrange zadd 0 -1 rev withscores
zrank 이름 key # key의 순위를 반환
순위는 0부터 시작한다.
내림차순으로 랭킹조회
zrevrank 이름 key
내림차순으로 조회한 결과 c
가 1등(0
)이다.
가중치 기준 최대,최소값 원소 삭제
zpopmax 이름
zpopmin 이름