Database/NoSQL

[Redis] Redis 살펴보기💥

도토리즈 2023. 3. 31. 19:42

 

python으로 소켓을 사용해보면서 redis를 사용하게 되었다

여태껏 RDBMS만 사용해봤기 때문에 NoSQL은 처음 사용해봐서 공부 + 기록용으로 쓰는 포스팅🐱

 

 

레디스(Redis)

 - 레디스(Redis)는 Remote Dictionary Server의 약자로써 "key - value" 구조의 비 정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의 비 관계형 데이터베이스 관리 시스템(DBMS)

- 레디스는 다양한 인 메모리 데이터 구조 집합을 제공하므로 사용자 정의 애플리케이션을 손쉽게 생성 할 수 있음

- 주요 Redis 사용 사례 : 캐싱, 세션 관리 등

 

캐싱(Caching)

 - 데이터를 더 빠르고 효율적으로 액세스 할 수 있는 임시 데이터 저장소 (재 사용 데이터가 1회 이상인 경우 효율적)

 

레디스 자료구조 

String
Bitmap 
List
Hash
Set 
sorted Set
hyperLogLogs
Stream

 - 저장하고자 하는 value에 따라 적절한 자료구조 선택

 

Redis 데이터 영구 저장 방법 ( AOF  ||  RDB ) 

사용 시 주의점  : 서버 재 시작 시 데이터 유실 , Redis를 캐시 이외의 용도로 사용한다면 적절한 백업 필요

① AOF (Append Only File)

- 데이터를 변경하는 커맨드가 들어오면 커맨드를 그대로 모두 저장

- 레디스 프로토콜 형태로 저장

 

②RDB(snapshot)

- 스냅샷 방식, 저장 당시 메모리에 있는 데이터 그대로를 사진 찍듯 찍어서 파일로 저장 

- 바이너리 파일 형태로 저장

 

❓ 선택 기준 

- 백업 必 손실 발생 ok == RDB 단독 사용

- 장애 상황 직전까지 모든 데이터 보장 == AOF 사용 

- 강력한 내구성이 필요한 경우 == RDB & AOF 동시 사용 

 


ex )채팅 데이터 저장

 

1) redis 실행

$ redis-cli

- redis 기본 포트 : 6379  

 

2) 소켓 및 redis 연결 후 채팅 룸 생성

import redis
#redis 연결
redis_client = redis.Redis()

- room1 이라는 이름으로 채팅방 생성 후 대화 

 

3) 전체 key 확인

$ keys *

- room1 key가 생성된것 확인 

 

4) 해당 key의 value 전체 조회

$ lrange key명 0 -1

5) 가장 최근 데이터 가져오기

$ lindex key명 0

6) 전체 데이터 삭제

$ ltrim key명 1 0

-  최근 1개만 남겨두고 전체 삭제하고 싶은 경우는 범위를 start = 0 , end = 0 으로 지정

- 전체 데이터 삭제된 경우 key * 를 조회해보면 해당 key도 사라진 것을 확인 가능 == del key명

 

7) 전체 key 삭제

$ flushall

- flushall 입력 후 keys * 를 조회하게 되면 key list가 비어있는 것을 확인 할 수 있다.

 

 

 

 

[참고1][NHN FORWARD 2021] Redis 야무지게 사용하기

[참고2]Redis란 무엇입니까?