Redis(Remote Dictionary server) is an open source (BSD licensed), in-memory data structure store
used as a database, cache, message broker, and streaming engine
특징
1. In memory
디스크가 아닌 메모리를 사용한다. 백업을 위해 copy나 디스크 저장 방법을 제공한다.
2. 기본적으로 key, value 형태로 데이터를 저장한다 (NoSQL)
3. Single thread 기반이다.
서버에 여러개의 redis server를 사용 가능하다.
특정 작업시에는 코어를 1개 이상 사용할 때가 있다.
Data Structure

String
- key와 value가 일대일 관계이다.
- 문자열 뿐만 아니라, text, integer, image, binary file등도 지원한다. (binary-safe strings)
- SET/ GET/ INCR 등의 명령어가 있다.
List
- string으로 이루어진 양방향 linked list이다.
- 주로 스택과 큐로 사용하며, background worker system을 위한 queue management에 사용되기도 한다.
- publisher-subscriber 패턴에 유용한 자료구조이다.
redis에 특정 서버가 이벤트를 publish하고, 다수의 subscriber 서버가 이를 알아챌 수 있다.
ex) LPUSH(head), RPOP(tail) : 왼쪽에 push, 오른쪽에서 pop (FIFO)
ex2) LPUSH, LPOP : 왼쪽에 push, 왼쪽에서 pop (LIFO)
LLEN: 리스트의 길이를 리턴
LMOVE: 다른 리스트로 원소들을 이동
LTRIM: 리스트를 특정 범위로 제한
Set
- string들의 집합.
- set operations를 지원한다 : SINTER/ SUNION/ SDIFF
Sorted Set(ZSet)
- Set에 score가 추가된 형태의 자료구조
- score로 정렬된 형태로 저장되어 있으며, 동score일 경우에는 value에 의해 정렬된다.
ZRANGE: 주어진 범위의 ZSet을 반환한다. (0이 highest score)
ZRANK: 주어진 멤버의 랭크 값을 반환한다. *score 오름차순 정렬
ZREVRANK: 주어진 멤버의 랭크 값을 반환한다. *score 내림차순 정렬
Hash
field와 value로 구성
HSET/ HGET/ HMGET/ HINCRBY
cluster
redis cluster의 cache 문제 **참고
local에서 테스트용 서버를 down했다가 다시 up할 때, 컨테이너는 다시 떴는데 관련 redis cache들은 남아있어
잘 실행되지 않는 문제가 생겼다.
line 1: redis container에서 /bin/sh 명령어로 쉘을 실행한다.
line 2: redis cli를 실행한다
line 3: cluster에 참여하는 node들의 정보를 확인한다
line 4: redis에 저장되어 있는 모든 키를 가져온다 -- 키 확인
line 5: 찾고싶은 키에 해당하는 모든 field와 value를 가져온다. --이 때 보면 남아있는 것이 보임
docker exec -it 40f19bc67b6d /bin/sh
$redis-cli -c
cluster nodes
keys *
hgetall {key_name}
'Backend > Database' 카테고리의 다른 글
| SQL 인코딩 정리: collate, UTF-8, utf8mb4 (0) | 2022.11.13 |
|---|