본문 바로가기
Tech Stack/Database ( TSDB, NOSQL, SQL )

Redis 기초

by jaeaemin 2022. 4. 4.

참고 : https://www.tutorialspoint.com/

 

Biggest Online Tutorials Library

 9 Courses     2 eBooks Created by - Tutorialspoint ₹2,599.99 ₹36,599.99 You Save ₹34,000.00 93 % off

www.tutorialspoint.com

 

Redis (REmote DIctionary Server)

       확장 가능한 고성능 웹 웹 어플리케이션을 구축하기 위한 오픈소스의 키-값 저장소이자 적절한 솔루션

       오픈소스로, 웹 사이트 데이터를 캐시해두는 데 주로 사용된다.

 

특징 

  • 레디스는 In-Memory 데이터베이스다. 즉, 모든 데이터를 메모리에 저장하고 조회한다. 기존 관계형 데이터베이스(Oracle, MySQL) 보다 훨씬 빠른데 그 이유는 메모리 접근이 디스크 접근보다 빠르기 때문이다
  • 다른 키-값 저장소와 비교할 때 상대적으로 풍부한 데이터 세트 유형을 가지고 있고 ,데이터를 원하는 수의 슬레이브에 복제할 수 있다.
  • 작업은 원자적이므로 두 클라이언트가 동시에 엑세스하는 경우 Redis 서버에 업데이트된 값을 수신한다.
  • 다중 유틸리티 도구로 캐싱, 메시징 대기열, 웹과 같은 단기 데이터 사용에 적절하다 ( 세션, 조회수 등 ) 
  • 트랜잭션 문제 해결 가능 : 싱글 스레드 동작 서버의 모든 자료구조는 원자성을 가지기 때문에, race condition을 피해 정확성을 보장하기 쉬움
  • 즉 외부의 collections을 잘 이용하여 개발 시간 단축이 가능하고, 여러가지 문제를 줄여주는 것이 가능함

 

 

 

 

레디스 설치 

- 우분투 환경 기준 -

 

 

// 레디스 설치 //
$sudo apt-get update 
$sudo apt-get install redis-server

// 레디스 시작 //
$redis-server
//레디스 작동 확인 //
$redis-cli 
redis 127.0.0.1:6379> ping 
>> PONG

 

 

 

 

 

레디스 자료구조

 

[1] String : 키-값 형식으로 연결될 수 있는 가장 간단한 유형의 값이다. ( 최대 512MB )

- 모든 종류의 문자열을 저장할 수 있어 JPEG 이미지, HTML fragment를 캐시하는 용도로 자주 사용된다.

 

redis 127.0.0.1:6379> SET name "tutorialspoint"
OK
redis 127.0.0.1:6379> GET name
"tutorialspoint"

redis 127.0.0.1:6379> SET counter 100
OK
redis 127.0.0.1:6379> incr counter 
(integer) 101

redis 127.0.0.1:6379> GETSET mycounter "0"
"1"
redis 127.0.0.1:6379> GET mycounter
"0"

 

 

[2] hash : 키-값 쌍의 모음으로, 문자열 필드와 문자열 값 간의 map으로 주로 객체를 나타내는데 사용된다.

 - 키에 대한 필드 갯수의 제한은 없다.

 - RDB의 테이블과 비슷하다 hash key=PK, field=column

 

redis 127.0.0.1:6379> HMSET user:1 username tutorialspoint password tutorialspoint points 200 
OK 
redis 127.0.0.1:6379> HGETALL user:1
1) "username" 
2) "tutorialspoint" 
3) "password" 
4) "tutorialspoint" 
5) "points" 
6) "200"

 

 

 

[3] list : 단순하게 삽입 순서로 정렬된 문자열 목록이다, head 또는 tail에 요소를 추가할 수 있다.

 - 목록의 최대 길이는 2^32 , 1개 요소(4294967295, 목록당 40억 개 이상의 요소 보유 가능)

 

redis 127.0.0.1:6379> lpush tutoriallist redis 
(integer) 1 
redis 127.0.0.1:6379> lpush tutoriallist mongodb 
(integer) 2 
redis 127.0.0.1:6379> lpush tutoriallist rabitmq 
(integer) 3 
redis 127.0.0.1:6379> lrange tutoriallist 0 10  

1) "rabitmq" 
2) "mongodb" 
3) "redis"

 

 

[4] Set :  정렬되지 않은 문자열 모음으로, Redis에서는 O(1) 시간 복잡도에서 추가, 제거 및 테스트할 수 있다.

 - 성공과 실패를 0,1로 나타냄 

 - 같은 요소는 insert 될 수 없음.

 

redis 127.0.0.1:6379> sadd tutoriallist redis 
(integer) 1 
redis 127.0.0.1:6379> sadd tutoriallist mongodb 
(integer) 1 
redis 127.0.0.1:6379> sadd tutoriallist rabitmq 
(integer) 1 
redis 127.0.0.1:6379> sadd tutoriallist rabitmq 
(integer) 0 
redis 127.0.0.1:6379> smembers tutoriallist  

1) "rabitmq" 
2) "mongodb" 
3) "redis"

 

 

[5] Sorted Set : Set과 유사하게 중복없는 멤버들을 저장하지만, 각각의 멤버는 스코어에 연결된다. ( sort가 필요한 데이터에 사용 )

 - 모든 데이터는 socre에 의해 연결되고 정렬된다.

 - 스코어가 같다면 멤버값의 사전순서로 정렬된다. 

 - 스코어의 정렬된 형태로 저장되기 때문에 인덱스를 이용하여 빠르게 조회할 수 잇어 조희 시간 단축이 가능하다.

 

redis 127.0.0.1:6379> zadd tutoriallist 0 redis 
(integer) 1 
redis 127.0.0.1:6379> zadd tutoriallist 0 mongodb 
(integer) 1 
redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq 
(integer) 1 
redis 127.0.0.1:6379> zadd tutoriallist 0 rabitmq 
(integer) 0 
redis 127.0.0.1:6379> ZRANGEBYSCORE tutoriallist 0 1000  

1) "redis" 
2) "mongodb" 
3) "rabitmq"
반응형

'Tech Stack > Database ( TSDB, NOSQL, SQL )' 카테고리의 다른 글

InfluxDB CQ ( continuous query )  (0) 2022.08.12
Telegraf  (0) 2022.07.15
InfluxDB  (1) 2022.06.27
Redis Command  (0) 2022.04.04
정규화  (0) 2022.03.10