Redis 의 장점으로는 다양한 자료구조가 있는점이다.
주로 사용되는 대표적인 타입: String, Set, Sorted Set, Hash, List
그외 : Bitmap, HyperLogLog, Geospatial, Stream, Bitmap, Bitfield
이해하는데 도움이되는 그림
Redis CLI
$ docker exec -it {Container id} redis-cli --raw
Strings
- 단순한 insert 문을 대체하기 위해 사용한다.
- ex) 유저의 token 저장, 이미지 저장 등
SET : 데이터를 저장한다.
GET : key의 값을 조회한다.
INCR : key에 저장된 수를 1씩 증가한다.
INCRBYSET : key에 지정한 수만큼 증가시킨다.
DECR : key에 저장된 수를 1씩 감소한다.
DECRBY : key에 지정한 수만큼 감소시킨다.
MSET : 여러개의 데이터를 한번에 저장한다.
MGET : 여러개의 데이터를 한번에 조회한다.
STRLEN : 키의 저장된 길이를 조회한다.
APPEND : key와 문자열이 있는 경우 문자열 뒤에 저장한다. key가 존재하지 않을 경우 새로 key를 생성한 후 문자열을 저장한다.
String (key - value)
$ set id 10
$ get id
$ del id
$ scan 0 // key 들을 일정 단위 개수 만큼씩 조회
Lists
linked list 구조로 돼있어서 데이터를 앞에서 넣거나 뒤에서 넣어도 소모되는 시간은 동일하다.
순차적으로 처리를 해야할 때 유용하다.
ex) job Queue, pub-sub 패턴
LPUSH : key에 값의 왼쪽부터 데이터를 저장하고 key가 없을 경우 새로 만든다.
RPUSH : key에 값의 오른쪽부터 데이터를 저장하고 key가 없을 경우 새로 만든다.
LRANGE : key 값의 인덱스와 last value를 지정하여 key값을 출력한다.
LPOP : key에 값의 왼쪽부터 데이터를 삭제한다.
RPOP : key에 값의 오른쪽부터 데이터를 삭제한다.
LPUSHX : key가 이미 있는 경우에만 왼쪽 부터 데이터를 저장한다.
RPUSHX : key가 이미 있는 경우에만 오른쪽 부터 데이터를 저장한다.
LINDEX : kety 값의 인덱스를 지정하여 값을 가져온다.
Sets
- 순서와 상관없이 중복되지 않는 문자열의 모음
- ex) 객체간 관계 표현, 팔로우한 유저 목록, 내가 북마크한 게시물
SADD : key에 member를 추가한다.
SMEMBERS : key의 member를 조회한다.
SREM : key의 member를 지정하여 삭제한다.
SCARD : key의 member 개수를 조회한다.
SDIFF : key1을 기준으로 key2 member의 차집합을 조회한다.
SDIFFSTORE : key1을 기준으로 key2 member의 차집합을 새로운 key에 저장한다.
SINTER : key1을 기준으로 key2의 member의 교집합을 조회한다.
SINTERSTORE : key1을 기준으로 key2 member의 교집합을 새로운 key에 저장한다.
SISMEMBER : key에 저장한 member가 있을 경우 1 , 없을 경우 0
SUNION : 지정한 key의 합집합을 조회한다.
SUNIONSTORE : 지정한 key의 합집합을 새로운 key에 저장한다.
Sorted Sets
- 가장 많이 사용되는 자료구조
- set과 구조는 같지만 각 member는 score를 가진다. ---> Key - Member - Score
- 중복되지 않는 member를 가짐
- 기본적으로 score 값으로 오름차순 정렬됨
- ex) 랭킹 서비스
ZADD : member와 score를 추가한다.
ZSCORE : member의 score를 조회한다.
ZRANK : member의 순위를 조회한다.
ZRANGE : key 값의 인덱스와 last value를 지정하여 순위를 조회한다. (기본 오름차순)
ZRANGEBYSCORE : key의 범위가 min에서 max를 지정하여 순위를 조회한다.
ZREVRANGE : key 값의 인덱스와 last value를 지정하여 순위를 조회한다. (내림차순)
ZINCRBY : key값의 member를 지정하여 score를 증가, 감소한다.
ZREM : 사용하지 않는 member를 삭제한다.
ZPOPMAX : key에서 score값이 가장 큰 member를 제거
ZPOPMIN : key에서 score값이 가장 작은 member를 제거
Hashes
- key : value 안에 key : value 가 있는 구조 (이중 string 형태)
- RDBMS 테이블과 비슷한 형태여서 상세 정보를 저장할 때 유용함
- ex) 별점 처리
HSET : 필드와 값을 저장한다.
HGET : 필드의 값을 조회한다.
HGETALL : key의 안에 있는 필드와 값을 모두 조회한다.
HKEYS : key의 안에 필드만 조회한다.
HVALS : key의 안에 필드의 값을 조회한다.
HEXSITS : key의 필드가 있는지 확인한다. 존재하면 1 존재안하면 0
HDEL : key의 필드를 삭제한다.
HINCRBY : 필드에 값을 증가시키거나 감소시킨다.
HLEN : 필드의 개수를 조회한다.
Hash (key - subkey - value)
$ hgetall USER // key의 매핑되는 모든 필드와 값들 조회
$ hset USER subkey value // key의 subkey의 값을 지정
$ hget USER subkey
Pub/Sub
ex) 채팅 서비스, 하나의 특정 메시지를 여러 사람이 받아야할 때
SUBSCRIBE : 특정 채널을 구독하기
UNSUBSCRIBE : 구독중인 채널을 탈퇴하기
PUNSUBSCRIBE : 일치하는 패턴의 채널 수신을 중단하기
PUBLISH : 메시지 발행하기, subscriber client에서 해당 메시지를 전달받는다.
PUBSUB : adminstrator가 효율적으로 subscriber를 관리할 수 있도록 하는 명령어
PSUBSCRIBE : 수신할 채널 이름의 패턴 등록
공식 사이트
'DATA > Redis' 카테고리의 다른 글
Redis 사용시 주의사항 (0) | 2023.03.09 |
---|---|
Redis - Serialize, Unserialize 란? 직렬화 저장의 단점 (0) | 2022.12.29 |
Redis 문제 해결 - WRONGTYPE Operation against a key holding the wrong kind of value (0) | 2022.12.29 |
Redis 운영모드 - Sentinel, Cluster (0) | 2022.12.29 |
Redis Persistence - RDB, AOF 장단점 (0) | 2022.12.28 |
댓글