Data Engineer

redis(레디스) 기초와 빠르게 구성하기

jssvs 2024. 3. 29. 00:59
반응형

1.레디스 란?

  • Redis = Re(remote) + di(Dictionary) + s (Server )
  • 메모리를 사용하는 db
  • NoSQL, Replication, Master/Slave 구조로 구성이 가능하다.
  • K/V 형태로 데이터 저장.
  • 파일 싱크를 제공
  • 다양한 데이터 타입 제공
  • Strings, Lists, Set, Hashes, Sorted Sets
  • NoSQL 이기 때문에 Table, db, function, row, column 이 존재 하지 않는다
  • 데이터 Interaction 이 Command 를 통해서 이뤄진다.

 

2.왜 레디스?

  • Simple , Flexible
  • Schema, Table, 이 필요없다.
  • Durable
  • Disk 에 데이터를 저장하는 옵션이 있다.
  • 깃헙, 스냅챗, 트위터, 스택오버플로우 등 다양한 서비스에서 사용중

 

** 추가 정보

  • 100만개의 키들을 저장할때 70MB 정도 공간이 소모 된다.
  • 100만개 - 70 MB. 1억개 - 약 7GB,
  • HashType은 매우 효과적으로 인코딩된 사전구조로 되어 있어, Redis 코어 개발자중 한명인 Pieter Noordhuis가 추천함
  • 아이디를 버킷 사이즈로 divid 한 값을 버킷으로 사용. 예를 들어 버킷 사이즈를 1000개로 만든다면?? 아이디를 1000으로 나눈다. >HSET 'mybucket:1155' '11552' '939' >HGET 'mybucket:1155' '11552'
  • HashType 을 이용하여 버킷으로 저장 하는경우 100만 키 - 16MB
  • 데이터를 durable 할 수 있게 파일에 쓰는 옵션이 다양한데, 안전한 옵션일 수록 redis의 속도를 느리게 한다.

 

3.레디스 도커 컨테이너를 이용하여 빠르게 올려보기

 

A) 레디스 구축 명령어 history

#네트워크 생성
$sudo docker network create redis-net

#레디스 서버 
$sudo docker run --name my-redis --network redis-net -p 6379:6379 -v /home/deploy/redis_data:/data -d redis:alpine redis-server --appendonly yes

# 레디스 컨테이너 실행
$sudo docker run --name my-redis --network redis-net \
-p 6379:6379 \
-v ./redis_data:/data \
-v ./redis.conf:/usr/local/etc/redis/redis.conf \
-d redis:alpine redis-server /usr/local/etc/redis/redis.conf


#레디스 CLI
$sudo docker run -it --network redis-net --rm redis:alpine redis-cli -h my-redis

sudo docker run -it --rm redis:alpine redis-cli -h my-redis
$vi redis.conf
requirepass 1111

 

 

B) redis conf

#인증 패스워드 설정
requirepass 1111

#스냅샷 파일 저장 디렉토리 경로 설정
dir /data

#스냅샷 db 파일 이름 설정
dbfilename dump.rdb

#AOF 설정 (Append-Only File) OS 레벨에서 맛탱이 갔을 때를 대비해 
appendonly yes

# 60초마다 1000번 이상 데이터 변경 시 저장
save 60 1

 

C) Redis Client Command

#인증 패스워드 설정
requirepass 1111

#스냅샷 파일 저장 디렉토리 경로 설정
dir /data

#스냅샷 db 파일 이름 설정
dbfilename dump.rdb

#AOF 설정 (Append-Only File) OS 레벨에서 맛탱이 갔을 때를 대비해 
appendonly yes

# 60초마다 1000번 이상 데이터 변경 시 저장
save 60 1
반응형