개발일기

Python - Redis 연결 ( FastAPI ) 본문

프로그래밍 언어/Python

Python - Redis 연결 ( FastAPI )

Flashback 2021. 12. 7. 18:02
728x90
반응형

1. Redis 의존성 설치

pip3 install redis
# 패키지 매니저 pip을 통해 redis관련 패키지 의존성 설치

pip을 통해 redis 존성을 추가했다고 해서, OS에 레디스 서버가 설치되는 것과는 별개이다. AWS RDS와 같은 외부 서버에 설치되어 있는 레디스 서버에 접속하려는 경우에는 의존성 추가만으로도 충분하지만, 만약 로컬에 설치되어 있는 레디스 서버에 접속하려는 경우에는 추가적으로 레디스 서버의 설치가 필요하다.

 

https://phsun102.tistory.com/51

 

CentOS에 Redis설치 ( wget 활용 )

0. 기본 설정 다운로드 폴더를 생성 후, 해당 폴더로 이동 mkdir /downloads cd /downloads 1. Redis 파일 다운로드 Redis 공식 홈페이지에서 파일을 wget 명령어를 통해 다운로드한다. wget 명령어란 웹 상의 파.

phsun102.tistory.com

자신의 OS가 CentOS인 경우 위의 글을 참조하여 설치를 진행할 수 있다. Window와 Mac과 같은 다른 운영체제인 경우는 Redis 공식 홈페이지에서 설치를 하거나 OS 패키지 매니저 choco, brew를 활용하여 설치를 진행할 수 있다.


https://phsun102.tistory.com/62

 

Python - FastAPI 프레임워크란?

FastAPI란? 파이썬 3.6 버전부터 제공되는 트랜디하고 높은 성능을 가진 파이썬 프레임워크. FastAPI라는 이름처럼 빠르게 개발을 진행할 수 있다. 별도의 구성이나 설치의 필요없이 바로 사용할 수

phsun102.tistory.com

 

https://phsun102.tistory.com/63

 

Python - FastAPI DB Connection ( SQLAlchemy )

필수 설치 요소 pip3 install sqlalchemy # ORM을 통하여 DB 쿼리문을 작성하기 위해 설치 pip3 install python-dotenv # DB관련 정보를 입력할 때, 환경변수를 통하여 내용을 입력하기 위해 dotenv 설치 폴더구조..

phsun102.tistory.com

Python의 FastAPI 프레임워크를 바탕으로 Redis 연결을 진행할 것이기에 해당 글들을 참조하여 설정한 후 진행하면 된다.


2. routes 설정

# routes/test.py에 해당 함수 추가

@router.get("/redis_test")
async def redis_test():
    res = await test.redis_test()
	
    return {
        "res": res,
    } # Redis 결과

url 경로 마지막이 /redis_test인 경우 해당 redis_test() 함수를 실행시킨다.

 

 

3. redis_config.py 파일 생성

# core/redis_config.py
# core 디렉터리에 redis_config.py라는 파일을 새로 만든다.

import os
from dotenv import load_dotenv
import redis

load_dotenv()

def redis_config() :
	
    try:
        REDIS_HOST = str = os.getenv("REDIS_HOST")
        REDIS_PORT = integer = os.getenv("REDIS_PORT")
        REDIS_DATABASE = integer = os.getenv("REDIS_DATABASE")
        rd = redis.Redis(host=REDIS_HOST, port=REDIS_PORT, db=REDIS_DATABASE)
        # redis.StrictRedis( ... ) 라고도 사용할 수 있다
        # Python의 버전이 3으로 업데이트 되면서 함수명이 변경되었다
        # 하지만 버전 호환을 위해 StrictRedis로도 연결을 할 수 있다
        # 즉, Redis = StrictRedis로 동일한 기능을 하는 함수이다
		
    except:
        print("redis connection failure")
# .env

REDIS_HOST = localhost
REDIS_PORT = 6379
REDIS_DATABASE = 0

Redis의 호스트, 포트, 데이터베이스 번호를 .env 파일에 추가하였기 때문에 os.getenv()를 통해 가져온다.

redis.Redis()호스트와, 포트, 데이터베이스 번호를 인자값으로 추가한다.

 

 

4. api 함수 수정

# apis/test.py

from sqlalchemy.orm import Session
from crud import crud_test
from core.redis_config import redis_config
# redis 설정파일 불러오기

def test_index(db):
	something = crud_test.get_items(db)
	return something
	
# url이 /items/redis_test일 경우 실행되는 함수
async def redis_test():
	rd = redis_config()
	rd.set("juice", "orange") # set
	
	return {
	    "data": rd.get("juice") # get
	}

Redis 사용을 위해 rd = redis_config() 변수 선언을 진행한다. rd 변수를 통해 Redis의 set, get 등의 함수를 사용하여 데이터를 조회 및 추가할 수 있다.

  • set : Redis에 Key, Value 형식으로 데이터를 저장한다
  • get : Key 값을 통해 Value 값을 가져온다

Key값을 juice로 설정하고 Value는 orange로 설정하였다.

 

 

5. API 문서 및 API 테스트

/docs로 살펴본 결과

 

/redoc으로 API 생성 확인

 

728x90
반응형
Comments