Redis ‐ Redis 자료구조 - dnwls16071/Backend_Summary GitHub Wiki
- Redis(Remote Dictionary Server)
- 고성능의 키-값 저장소로 거대한 맵 데이터 저장소 형태를 가지고 데이터를 메모리에 저장해 빠른 읽기와 쓰기를 지원한다.
- 주로 캐싱, 인증 관리, DB 동시성 제어 등에서 다양한 목적으로 사용
- Redis 주요 특징
- key-value로 구성된 단순화된 데이터 구조로 SQL 쿼리 사용 불필요
- 인메모리 NoSQL 데이터베이스로서 빠른 성능을 자랑
- RDB는 기본적으로 디스크에 저장하고 필요시에 메모리를 캐싱하는 것이므로 RDB보다 훨씬 빠른 성능
- Redis의 메모리 상의 데이터는 주기적으로 스냅샷 디스크에 저장된다.
- key-value는 구조적으로 해시 테이블을 사용함으로서 매우 빠른 속도(=O(1))로 데이터 검색이 가능
- Single Thread 구조이기 때문에 동시성 이슈가 발생하지 않는다.
- 윈도우 서버에서는 지원X, Linux 서버 및 MAC OS등에서 사용 가능
- Redis는 0~15번까지의 데이터베이스로 구성(default는 0번 DB)
select DB 번호
- 데이터를 String 형태의 value로 저장
- 가장 일반적인 key - value 구조 형태
- Redis strings store sequences of bytes, including text, serialized objects, and binary arrays.
- As such, strings are the simplest type of value you can associate with a Redis key.
- By default, a single Redis string can be a maximum of 512 MB.
Ex. string 활용(동시성 이슈, 캐싱 처리)
$ set user:email:1 [email protected]
$ set user:email:2 "[email protected]"
# nx : 이미 존재한다면 pass, 없다면 set
$ set user:email:1 [email protected] nx
# ex : 만료시간(초단위) TTL(Time To Live)
$ set user:email:1 [email protected] ex 10
$ get user:email:1 [email protected]
$ del user:email:1 [email protected]
# 현재 DB 내의 모든 Key를 삭제
$ flushdb
# 좋아요 기능 구현
$ set likes:posting:1 0
# 특정 key값의 value를 1만큼 증가
$ incr likes:posting:1
# 특정 key값의 value를 1만큼 감소
$ decr likes:posting:1
$ get likes:posting:1
# 재고 관리
$ set stocks:product:1 100
$ decr stocks:product:1
$ get stocks:product:1- Returns the remaining time to live of a key that has a timeout.
- This introspection capability allows a Redis client to check how many seconds a given key will continue to be part of the dataset.
- Redis lists are linked lists of string values.
- deque 또는 double-ended queue와 유사한 구조
- 데이터 추가 방법
- LPUSH key value
- RPUSH key value
- 데이터 중간에 삽입 불가
- 데이터 추출 방법
- LPOP key
- RPOP key
- 데이터 개수 조회
- LLEN key
# lpush : 데이터를 왼쪽에 삽입
LPUSH key element [element ...]
# rpush : 데이터를 오른쪽에 삽입
RPUSH key element [element ...]
# lpop : 데이터를 왼쪽에서 꺼내기
LPOP key
# rpop : 데이터를 오른쪽에서 꺼내기
RPOP key- A Redis set is an unordered collection of unique strings (members). You can use Redis sets to efficiently.
- Set key to hold the string value. If key already holds a value, it is overwritten, regardless of its type.
- Any previous time to live associated with the key is discarded on successful SET operation.
- 중복을 허용하지 않는 문자열 집합
- A Redis sorted set is a collection of unique strings (members) ordered by an associated score.
- When more than one string has the same score, the strings are ordered lexicographically.
- Redis hashes are record types structured as collections of field-value pairs.
- hash는 value값이 map 자료구조를 가진다. 즉,
key:<key-value>