본문 바로가기

대학생활

[Python] Flask에서 Redis 사용하기

※ 개발 환경은 Linux에서 진행했습니다. Linux가 Redis 굴리기 편하실 거에요..

 

Step1: Redis 설치

먼저 Redis를 설치 한다. 검색창에 Redis download를 치면 각 운영체제에 맞는 다운로드 페이지가 뜬다.

Redis 설치 사이트

 

다운 받은 페이지에 들어가서..

tar -xvf redis-7.0.5.tar.gz
cd redis-7.0.5
make

이렇게 해주면 Redis를 사용할 수 있답니다~~

make 명령어가 성공 했다면 아래와 같은 메세지가 아래쪽에 나타난다.

Hint: It's a good idea to run 'make test' ;)

 

※ 잠깐!!😮

make 명령어 했는데 오류가 나요 ㅠㅠㅠㅠ

 

라는 말이 하고 싶으셨다면,, 아래의 명령어를 실행해 봅시다!

sudo apt install make
sudo apt update
sudo apt install gcc

ㄹㅇ..

 

설치가 끝나고 해당 디렉토리에서

src/redis-server 하면 Redis 서버가 실행되고
src/redis-cli 하면 직접 명령어 입력할 수 있는 shell이 생긴다.

 

Step2: Python 가상환경 및 라이브러리 설치

일단.. 프로그램을 돌릴 큰 폴더 하나 만들어 주시고..

"가상 환경 설치"

python3 -m venv project

"필수 라이브러리 설치"

pip install flask
pip install redis

이렇게 하면 대충 게임 끝..

참고로 flask==2.2.2이고 redis==4.3.4버전이다.

 

※ 잠깐!!😮

Linux는 IDE 뭐 써야 해요 ㅠㅠㅠㅠ

 

라는 말이 하고 싶으셨다면,, 일단 Pycharm을 추천 드립니다.. vscode는.. 흠.. 잘쓰시면 좋아요

검색창에 pycharm download 검색하셔서 linux용 파이참 다운 받고

압축 풀고~

압축 푼 폴더/bin에서 ./pycharm.sh 해주면 pycharm이 동작합니다~

 

+팁

pycharm에 가상환경이 있는 프로젝트 폴더를 오픈해주고

터미널 몇번 껐다 켜주다보면 알아서 가상환경 내에 진입해줌 ㅁㅊ.. ㄹㅇ 미친 기능

 

Step3: Python 코드 작성

Redis와의 소통을 위한 코드는 아래와 같다.

import redis

db = redis.Redis('localhost')

이러면 바로.. "Redis ON"🙊

 

 

Redis객체 활용법

 

형식) db.{redis 명령어}(args)

예)

name = "miji"

db.set("name", name)
db.get("name")

* redis-cli에서 시험 가능합니다~ 거기선
set name miji 이렇게 하시면 돼요~~ <= 검색 ㄱㄱ

 

 

Step4: Redis 로컬 서버와 소통

직접 Python 코드 짜서 request보내는 것도 좋지만, 뭔가 더 편해보여서 "Insomnia"라는 툴을 활용했다.

Insomnia 설치는.. 계속 클릭하다보면 깔린다. (window, linux 둘다 가능)

저 빨간 부분을 클릭하면 request요청을 위한 새로운 페이지를 만들 수 있다.

request page

저기다 해당 endpoint의 url을 입력하고

POST요청 같은 추가 내용이 필요한 부분은 입력해서 <Send> 버튼을 눌러주면 된다.

※ 보내는 형식은 편한대로 해도 되지만,, 저는 JSON밖에 다룰 줄 몰라서 JSON 했습니다..

(BODY부분 클릭해서 JSON데이터 보내는 걸로 설정할 수 있습니다..)

 

Redis in Python

project_dir/project_name/__init__.py

from flask import Flask

import redis

db = redis.Redis('localhost')

def create_app():
    app = Flask(__name__)

    from .views import redis_view

    app.register_blueprint(redis_view.bp)

    return app

project_dir/project_name/view/redis_view.py

from flask import Blueprint, request
from .. import db


bp = Blueprint('redis', __name__, url_prefix='/redis')

@bp.route("/create/", methods=["POST"])
def create_something():
    data = request.get_json()

    num = data["num"]

    db.setnx(f"{num}", 1)

    return {"message": "post succeed"}

※ project_dir/app.py의 경우는 하나로 퉁쳐서 해요~

from flask import Flask, request

import redis

db = redis.Redis('localhost')

app = Flask(__name__)


@app.route("/create/", methods=["POST"])
def create_something():
    data = request.get_json()

    num = data["num"]

    db.setnx(f"{num}", 1)

    return {"message": "post succeed"}

 

이런 느낌으로 라우팅과 세팅을 해주면 "localhost:8000/create/"에 post요청을 보낼 수 있대요!!(있어요!!)

보낸 데이터는 sb.setnx()명령어로 인해 redis로 들어간다..(중복이 있을 땐 set 안하는 set함수)

 

그리고.. 이 Redis 녀석에게 Insomnia로 데이터를 보내면..!?!

쨔잔~! 이렇게 Insomnia를 활용하시면 됩니다.. 옆에 HTTP 상태랑 걸린 속도, 데이터 크기가 나오네요..😦

 

※ 잠깐!!😮

뭐야..? 잘 간 거 맞아..?

 

라고 생각하신 분들,,은 Redis-cli를 열어서 데이터를 확인할 수 있대요..

깔ㅡ끔

깔ㅡ끔

 

 

참고 자료

https://product.kyobobook.co.kr/detail/S000001057483

 

이것이 레디스다 | 정경석 - 교보문고

이것이 레디스다 | 『이것이 레디스다』는 NoSQL의 분류에 관한 설명을 포함한다. 데이터 저장구조를 기준으 로 NoSQL을 분류하고 해당 개념을 간단하게나마 정리하여 NoSQL에 대한 기본지식을 익힌

product.kyobobook.co.kr

https://gist.github.com/calderonroberto/f4d8badb94c01e9020db

 

Flask Redis Example

Flask Redis Example. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com