Closed thals0 closed 1 year ago
Redis에서 제공해주는 자료구조 중 하나인 Sorted Set(또는 ZSET, 둘다 동일한 말이다)은, 이름 그대로 Set의 특성을 그대로 가지면서 추가적으로 저장된 value들의 순서도 관리해준다. 이 때 이 순서를 위해 각 value에 대해 score를 필요에 맞게 설정할 수 있으며, 이 score를 기반으로 정렬이 된다.
ZSET은 key/value 형태의 자료구조이고, 여기서 key는 member, value는 score 라고 부른다. 하나의 ZSET에서 member는 unique하고, member 값을 통해 시간복잡도 O(1)로 해당하는 원소에 바로 접근할 수 있다. score 은 부동 소수점 수만 허용되고, 이 score 값을 기준으로 ZSET 내의 각 원소들이 순서를 가지게 된다.
1. Redis란?
Redis 는 Key-Value 형태로 데이터를 관리하는 오픈 소스
Redis 는 빠른 속도와 간편한 사용법으로 인해 캐시, 인증 토큰, 세션 관리 등등 여러 용도로 사용됨
2. Redis 설치
도커로 설치 후 실행 가능
27
3. Redis 명령어
Redis 는 여러 개의 데이터 타입을 저장할 수 있기 때문에 각각의 명령어가 여러개 존재
모든 명령어는 Redis Commands 를 참고
다만 Redis 는 Single Thread 기반이기 때문에 keys, flushall, flushdb, getall 등 일반적으로 생각했을 때 O(N) 의 시간복잡도를 가질 것 같은 명령어는 운영 환경에서 사용하면 위험하다
3.1 String
가장 기본적인 Value 타입입니다.
set {key} {value}
: key, value 를 저장mset {key} {value} [{key} {value} ...]
: 여러 개의 key, value 를 한번에 저장setex {key} {seconds} {value}
: key, seconds, value 저장 (설정한 시간 뒤에 소멸)keys *
: 현재 저장된 키값들을 모두 확인 (부하가 심한 명령어라 운영중인 서비스에선 절대 사용하면 안됨)get {key}
: 지정한 key 에 해당하는 value 를 가져옴mget {key} [{key} ...]
: 여러 개의 key 에 해당하는 value 를 한번에 가져옴ttl {key}
: key 의 만료 시간을 초 단위로 보여줌 (-1 은 만료시간 없음, -2 는 데이터 없음)pttl {key}
: key 의 만료 시간을 밀리초 단위로 보여줌type {key}
: 해당 key 의 value 타입 확인del {key} [{key} ...]
: 해당 key 들을 삭제rename {key} {newKey}
: key 이름 변경expire {key} {seconds}
: 해당 키 값의 만료 시간 설정randomkey
: 랜덤한 key 반환ping
: 연결 여부 확인 ("ping" 만 입력하면 "PONG" 이라는 응답이 옴)dbsize
: 현재 사용중인 DB 의 key 의 갯수 리턴flushall
: 레디스 서버의 모든 데이터 삭제flushdb
: 현재 사용중인 DB 의 모든 데이터 삭제3.2 Set
Redis 에서는 Set 에 포함된 값들을 멤버라고 표현 여러 멤버가 모여 집합 (Set) 을 구성 진짜 집합처럼 교집합, 차집합 등도 구할 수 있는데 여기선 간단하게 CRUD 만 적어보겠다
sadd {key} {member} [{member} ...]
smembers {key}
srem {key} {member [{member} ...]}
scard {key}
sismember {key} {member}
3.3 Hash
Hash 자체를 나타내는 key 와 해당 key 에 포함된 field 까지 사용해서 값을 조회/저장할 수 있다
Reference