Redis 기초 특강 - 강대명 멘토

Redis 소개

  • In-memory data structure storage
    • disk 접근을 하지 않음 -> 속도가 빠르다
  • 오픈소스(BSD 3)
  • 제공되는 자료구조들
    • Strings, set, sorted-set, hashes, list (Redis Collections)
      • sorted-set: 순서가 있는 set
      • hashes: sub-index가 들어갈 수 있음
    • Hyperloglog, bitmap, geospatial index
      • hyperloglog: 확률적으로 그룹 정보를 저장 (대신 정확도가 떨어짐)
    • Stream

특징

  • C로 작성됨
  • Single Threaded
    • 한 번에 하나만 처리 가능 -> 쓰고 저장하는 것이 atomic
  • 메모리 사용량에 민감함
    • 대량으로 사용할 경우에는 관리가 쉽지 않음
  • 어디에 사용?
    • Remote Data Structure
      • 서버가 여러 대 존재할 때, OAuth 토큰을 Redis 메모리에 저장하면 유저의 로그인 정보를 공유할 수 있음 (Strings or Hash)
    • 랭킹보드로 사용 (Sorted Set 사용 -> 점수를 쉽게 추가하고 정렬할 수 있음)
    • 유저 API limit
    • Job queue로 사용 (list)

설치

  • brew install redis

실행

  • redis-server

  • redis-server --bind 0.0.0.0 --port 6379

  • redis-cli

자료구조 몇 가지 필기

  • List
    • LPOP, RPOP
      • List에 데이터가 없으면, 리턴 (nil)
    • BLPOP, BRPOP
      • Blocking LPOP / RPOP
      • 누가 데이터를 push하기 전까지 대기했다가, 데이터가 들어오면 pop
      • 세션을 두 개 열어놓고 각각 명령어를 입력해보면 확인할 수 있음
  • Sorted Set
    • (주의) Sorted set의 score는 double형이기 때문에, 값이 정확하지 않을 수 있음
    • 컴퓨터에서는 실수가 표현할 수 없는 정수값들이 존재하므로, 이에 민감한 경우 유저 랭킹보드로 사용 불가
  • 문법은 강의자료와 공식 문서를 참고하기

실무 팁

  • Redis 서버를 여러 개 사용할 경우, 서버에 task가 균등하게 분배되는 것이 중요
    • key를 해시테이블에 저장하기
  • look inside cache로 쓰는 경우가 많음
    • 원하는 데이터가 Redis에 있으면 사용
    • 없으면 DB가 Redis에 다시 채워놓음
    • 메모리가 꽉 찼다면?
      • Redis에 저장된 데이터가 DB에 없으면 저장하고 지움
      • or 아예 Redis만 DB처럼 사용
        • 빠르게 접근해야 하는 데이터를 메모리에 올려놓고 사용
  • Redis가 죽으면 DB가 부하를 못 버티고 죽는 경우가 많음
    • -> master-slave 구조로 여러 대의 Redis 서버를 돌리는 식으로 사용함

기타

  • skip list
    • 이진 트리를 list로 구현한 것
    • O(nlogn)

2019

Redis 기초 특강 - 강대명 멘토

1 minute read

Redis 소개 In-memory data structure storage disk 접근을 하지 않음 -> 속도가 빠르다 오픈소스(BSD 3) 제공되는 자료구조들 Strings, set, sorted-set, ...

Node.js 특강 - 손영수 멘토 (2)

2 minute read

MongoDB 클라우드 서비스를 SaaS로 제공하려다가 그 중 DB 서비스가 제일 잘 나가서 MongoDB가 됨 No Schema: JSON data 삽입 시 field가 생성됨 Document data model JSON data를 그대로 넣음 ...

Node.js 특강 - 손영수 멘토 (1)

2 minute read

웹 서버의 구동 방식에는 8가지가 있음(3페이지) Node.js는 비동기, non-blocking Server side Javascript Event driven Asynchronous Non-Blocking I/O ...

TensorFlow.js: Speech Command Recognizer (번역)

less than 1 minute read

TensorFlow.js의 공식 모델 중 하나인 Speech command recognition에 대해 조사해 보았습니다. 원문 링크: tfjs-models/speech-commands at master · tensorflow/tfjs-models · GitHub

Chapter 04. HTML & CSS 필수 기초 (2)

2 minute read

이 포스트는 SW마에스트로 자기주도학습으로 패스트캠퍼스의 웹 프론트엔드 올인원 패키지 Online을 수강하면서 작성한 노트입니다.

Chapter 04. HTML & CSS 필수 기초 (1)

1 minute read

이 포스트는 SW마에스트로 자기주도학습으로 패스트캠퍼스의 웹 프론트엔드 올인원 패키지 Online을 수강하면서 작성한 노트입니다.

Chapter 03. CSS 입문

1 minute read

이 포스트는 SW마에스트로 자기주도학습으로 패스트캠퍼스의 웹 프론트엔드 올인원 패키지 Online을 수강하면서 작성한 노트입니다.

CC 라이센스

less than 1 minute read

소프트웨어 마에스트로 과정에서 아기 울음소리를 인식하고 분류하는 딥러닝 모델을 작성하고 있습니다. GitHub에 공개되어 있는 소리 데이터셋을 사용하기 위해 확인한 라이센스 몇 가지를 정리해 보았습니다. 참고한 곳: CC 라이선스 :: Creative Commons K...

URI와 URL의 차이점

less than 1 minute read

이 포스트는 What Is The Difference Between A URI And A URL? - DEV Community 👩‍💻👨‍💻 를 참고하여 작성되었습니다.

Chapter 02. HTML 입문

1 minute read

이 포스트는 SW마에스트로 자기주도학습으로 패스트캠퍼스의 웹 프론트엔드 올인원 패키지 Online을 수강하면서 작성한 노트입니다.

블로그 개설

less than 1 minute read

Github 블로그를 드디어 개설했습니다.🎉

Back to Top ↑