[Redis] Redis 살펴보기💥
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 야무지게 사용하기