byidev.com
Back-end/Django (4)
2024-01-24 03:37:50

redis

 

redis는 무엇일까?

 

레디스(redis)는 Remote Dictionary Server의 약자로서,

"키-값" 구조의 비정형 데이터를 저장하고 관리하기 위한 오픈 소스 기반의

비관계형 데이터베이스 관리 시스템(DBMS)이다.

 

모든 데이터를 메모리로 불러와서 처리하는

메모리 기반 DBMS이며 BSD 라이선스를 따른다.

 

우리가 레디스를 사용하는 이유는 다음과 같다.

1. 디스크가 아닌 주 메모리에 모든 데이터를 보유하고 있기 때문에 자료 접근이 빠르다.

2. 데이터 양의 빠른 증가로 데이터베이스 응답 속도가 떨어지는 문제를 해결할 수 있다.

 

그렇다면 어떤점을 주의하면 될까?

매체가 휘발성이기 때문에 DB 서버 전원이 꺼지면 안에 있는 자료들이 전부 삭제된다.

(로그인 세션등과 같은, 서버가 꺼져서 날아가도 상관 없는 임시 데이터 저장에 자주 쓰인다.)

쌓이게 되는 데이터가 많을경우 가상메모리를 쓰게 되기에 넉넉한 RAM 용량의 준비가 필요하다.

 

설치 방법

 

다음의 링크를 통해 ms redis - releases 페이지로 이동한다.

 

 

Releases · microsoftarchive/redis

Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes - microsoftarchive/redis

github.com

 

 

내용을 보면 크게 msi, zip, tar.gz 등이 있지만

우리는 윈도우 설치이기 때문에 msi 최신 버전을 받을 수 있도록 한다.

 

 

다운로드가 완료되었다면 msi 설치 파일을 실행한다.

다음의 절차에서 모든 이미지와 같이 설정해준 후

Next 버튼을 눌러 설치를 완료해준다.

 

(Next 클릭)

 

(동의 후 Next 클릭)

 

(별도 경로가 필요할 경우 변경 후 Next 클릭)

 

(redis 기본 통신 포트는 6379이며 추후 conf 수정을 통해 변경 가능, Next 클릭)

 

(redis에 할당할 메모리 설정이 필요하다면 기입 추후 변경 가능, Next 클릭)

 

(일전의 설정값을 기반으로 설치 진행, Install 클릭)

 

(설치 진행 모습)

 

정상적으로 이 모든 절차를 마쳤다면 redis는 이미 동작중이다!

작업 관리자에서 다음과 같이 확인해보자.

 

다음과 같이 설치 경로상에서

redis-server.exe 파일을 통해 서버를 실행할 수 있으며,

redis-cli.exe 파일을 통해 서버 정상 동작 유무를 확인할 수 있다.

 

(redis-server.exe 실행 화면)

실행이 안된다면 작업관리자로 종료 후 다시 실행해보자.

이미 실행중이기 때문에 안 켜지고 있는것이다.

 

(redis-cli.exe 실행 화면)

"ping"의 커맨드를 보내면 "PONG"이라고 응답하며 정상 동작 유무를 알려준다.

실행이 안된다면 redis-server.exe 파일이 실행중인지 확인해보자.

 

2023-06-22 19:24:05


Serializer


DRF Serializer

  • Serializer만 알면 Django와 DRF의 차이점을 모두 파악한 것이나 다름 없음
  • Serializer의 사전적 의미 ⇒ 직렬화
    • 직렬화는 Django 프로젝트에서 내가 만든 모델로부터 뽑은 queryset, 모델 인스턴스를 JSON 타입으로 바꾸는 것
    • Django 모델은 JSON으로 변환하기 위한 틀로 이해할 것

  1. DRF 내에서 데이터를 저장할 때에는 DJANGO의 모델을 통해 저장
    1. 모델은 데이터베이스 테이블을 추상화한 개념
    2. Django의 ORM(Object Relation-Mapping)을 통해 Python 문법으로 데이터를 처리
    3. ⇒ Django의 데이터는 JSON같은 포맷이 아닌 파이썬 객체의 형태로 저장
  2. API는 데이터를 클라이언트에게 보내주는 역할
    1. 정제 또는 정리 되지않은 데이터를 클라이언트가 받을경우 읽지 못하는 Python 데이터 받게됨
    2. 다음과 같은 이유로 Python 데이터를 읽을 수 있는 문자열(JSON 등)로 변환해 보내주어야 함
  3. 결론 : Python 데이터 객체를 문자열로 변환하는 작업을 직렬화, Serialize 라고 함

  1. 클라이언트가 데이터를 DRF 서버에 보내는 경우
    1. POST 요청을 보내는 API를 클라이언트가 사용해 데이터를 생성하려는 경우
      1. 클라이언트는 API 요청에 데이터를 JSON 등 문자열 형태로 입력하여 전송
      2. DRF 서버 입장에서는 문자열 그대로 서버에 저장 불가
      3. 모델을 통해 저장하려면 데이터가 파이썬 객체의 형태이어야 함
    2. Deserialize - 역 직렬화, JSON 등의 문자열을 파이썬 데이터 객체로 변환하는 작업

DRF Serializer data flow

2023-06-22 18:24:15

DRF


Django Vs. DRF


1. Django REST Framework

  • Django REST Framework는 Django를 기반으로 REST API 서버를 만들기위한 라이브러리
  • API는 웹 뿐만 아니라 앱과 같은 다양한 플랫폼의 백엔드 서비스를 위해 JSON과 같은 규격화된 데이터를 제공
  • Django REST Framework를 사용하면 자체적인 웹 템플릿에게 바로 데이터를 전달해 주었던 Django 프로젝트에서, JSON과 같은 양식으로 다양한 플랫폼의 클라이언트에게 데이터를 제공해줄 수 있는 API 서버 프로젝트가 만들어짐
  • Django REST Framework는 어디까지나 Django를 기반으로 한 라이브러리이기 대문에 전반적으로 Django의 개발 흐름을 따라감

2. Django Vs. DRF

  • Django RESET framework의 데이터들은 헤더
  • HTTP는 웹의 프론트엔드와 백엔드간 요청/응답을 위한 프로토콜
  • HTTP가 요청/응답할 때 누구나 같은 방식으로 통신하기 위한 규격이 HTTP 헤더
  • (모든 프로토콜에도 해당함)
  • 앞서 살펴봤던 상태 코드가 HTTP 헤더에 포함되는 내용
  • 기존은 뷰에서 템플릿으로 데이터를 제공해 주었다면, DRF 에서는 Serializer가 그 역할을 수행

 

  • Django vs. DRF 차이점 
    특징  Pure Django Django REST Frakework
    개발 목적 웹 풀스택 개발 백엔드 API 서버 개발
    개발 결과 웹 페이지를 포함한 웹 서비스 여러 클라이언트에서 사용할 수 있는 API 서버
    응답 형태 HTML JSON
    다른 파일 templates srializers.py

 

Home - Django REST framework

 

www.django-rest-framework.org

 

2023-06-22 18:20:33


1. MTV 패턴 & Django

  • MTV 패턴은 Model, Template, View의 약어.
  • Model은 앱의 데이터 관련부
  • Template은 사용자에게 보이는부
  • View는 중간에서 Model의 데이터 Template로 전달 Template에서 발생하는 이벤트를 처리하는부

MTV Pattern


2. Model

  • 앱의 데이터와 관련된 부분을 다루는 영역
  • 데이터베이스 저장 데이터 모양 정의 및 일부 기능 설정 영역
  • 개체의 특징을 뽑아 이를 구성 요소로 하느 것을 모델링이라 칭함
  • 모델링을 통해 나온 결과물을 모델이라 함
      1. 데이터 베이스 테이블과 같은 구조
      2. 모델 형태의 데이터가 쌓이며 데이터베이스 테이블이 된다
      3. 해당 모델을 데이터베이스에 적용시키는 과정을 **마이그레이션(Migration)**이라 칭함
      4. Django 가지고 있는 기본 모델 데이터베이스에 적용시키지 않았을 때 Migration 에러 발생ex. Model
      ID NAME PW EMAIL AGE SEX
      horang 호랑이 1234 horang@test.com 27 male
      yaong 야옹이 1234 yaong@test.com 29 male

3. View

  • Django의 View는 Template 과 Model 사이를 이어주는 중간 다리 역할
  • 단편적 역할
    • View는 Model을 통해 데이터에 접근하여 템플릿으로 부터 요청받은 데이터를 뽑아와 Template에게 답변을 송신
    • 즉, Front-end가 Back-end에게 데이터를 요청했을 때 Back-end에서 데이터를 뽑아 Front-end에게 제공하는 과정을 View가 처리
  • Django에서 가장 큰 비중을 차지하는것이 Model이라면 코드에서는 View가 가장 큰 비중을 차지
    1. Function View ( 난이도가 쉬운편 )
    2. Class View ( DRF 과정에서 부연 설명 )View는 만드는 방법이 다양하게 존재

3-1. URL

  • URL이란 웹 브라우저에서 특정 웹 사이트로 이동하기위해 사용되는 도구
    • URL은 라우팅의 역할과 동시에 서버로 해당 주소에 할당된 리소스를 요청하는 역할
    • 리소스는 Client가 웹 브라우저로 보는 HTML 페이지뿐만 아니라 내부를 채우는 데이터 등을 포함

4. Template

  • Django에서 템플릿은 사용자에게 보이는 부분
  • 웹 페이지의 골격, HTML로 작성된 부분

4-1. Django document - Template

  1. 템플릿에는 HTML 출력정적 부분과 동적 콘텐츠가 삽입되는 방법을 설명하는 특수 구문 포함
  2. Django 프로젝트의 템플릿은 여러 엔진으로 구성 가능, 또는 아예 사용하지 않을 수 있다
    1. 템플릿을 사용하지 않는 경우 0 값으로 설정
    2. Django Template Language(DTL)으로 불리는 자체 템플릿 시스템과 Jinja2를 제공
    3. 다른 템플릿 언어의 백엔드는 타사에서 제공
    4. 사용자 정의 백엔드 작성 가능 ⇒ 참조문서
  3. Django 1.8 Version 까지는 사용 가능한 유일한 내장 옵션이었다
    1. DTL은 독단적인 템플릿 라이브러리이지만, 다른 백엔드를 선택할 이유가 없다면 DTL 사용 권장
    2. 플러그형 애플리케이션을 작성중이거나 템플릿을 배포하려는 경우 더욱 권장
    3. 다음의 내용을 포함하는 Django의 contrib 앱은 DTL 사용 필수 ⇒ 참조문서
    4. 템플릿 엔진에 대한 일반 지원과 Django 템플릿 언어의 구현은 모두 django.template에 위치

5. Django의 특징

  • 일반적 HTML 구문과 99% 일치한다
  • 데이터 처리 및 Python 코드 작성이 가능한 Template Tag가 존재한다 ⇒ for, if 등 기본적 구문
  • Template Tag 는 다음과 같이 표현한다 ⇒ {}