본문 바로가기
Artificial Intelligence/60. Python

[PYTHON] Redis‑Py : Python용 Redis 커넥터 완벽 가이드

by Papa Martino V 2025. 7. 25.
728x90

Redis‑Py : Python용 Redis 커넥터 완벽 가이드
[PYTHON] Redis‑Py

 

Python 애플리케이션과 Redis 서버를 연결할 때 가장 널리 사용되는 라이브러리인 redis‑py는 간단하지만 확장성 높은 API를 제공한다. 이 글에서는 설치, 연결, 인증, CRUD, 파이프라인, Pub/Sub, 커넥션 풀 등 핵심 기능을 실전 예제와 함께 다룬다. Python 개발자가 Redis를 안정적이고 효율적으로 사용할 수 있도록 돕는 전문가 가이드다.

1. 설치 및 초기 설정

pip install redis
# 가능한 경우 속도 향상을 위한 hiredis 함께 설치
pip install redis[hiredis]

redis‑py는 Redis에서 공식적으로 권장하는 Python 클라이언트이며, hiredis를 함께 설치하면 응답 파싱 속도가 빨라진다

2. 기본 연결 예제

import redis

r = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)
print(r.ping())  # True 반환 시 연결 성공

옵션 decode_responses=True는 바이트 응답을 파이썬 문자열로 자동 변환해준다

3. 인증 및 TLS 연결

# 인증 예제
r = redis.Redis(
    host='localhost', port=6379,
    username='default', password='비밀123', db=0
)
r.ping()

# SSL 연결 예제
r_ssl = redis.StrictRedis(
    host='redis.example.com', port=6380,
    password='비밀', ssl=True, ssl_ca_certs='/path/ca.pem'
)
r_ssl.ping()

docker 또는 클라우드 Redis 환경에서 인증 및 SSL 연결 설정은 필수

4. CRUD: Redis 데이터 읽기/쓰기 예

# 문자열 저장 & 조회
r.set('mykey', 'hello')
print(r.get('mykey'))  # 'hello'

# 해시(Hash) 타입 사용
r.hset('user:1', mapping={'name':'Alice','age':'30'})
print(r.hgetall('user:1'))

# 키 삭제
r.delete('mykey')

redis‑py는 Redis의 주요 데이터 구조에 대한 직관적인 메서드를 제공한다

5. 파이프라인과 트랜잭션

pipe = r.pipeline()
pipe.set('a', 1)
pipe.set('b', 2)
pipe.get('a')
results = pipe.execute()
print(results)  # [True, True, '1']

파이프라인은 네트워크 왕복 횟수를 줄여 성능을 크게 향상시키며, MULTI/EXEC 트랜잭션 기능도 지원 

6. Pub/Sub 메시징

# 구독
p = r.pubsub()
p.subscribe('chat')
for msg in p.listen():
    print(msg)

# 발행
r.publish('chat', 'hello world')

Pub/Sub 패턴을 이용해 Redis를 간단한 메시징 미들웨어처럼 활용할 수 있다

7. 커넥션 풀 추천

pool = redis.ConnectionPool(host='localhost', port=6379, db=0)
r = redis.Redis(connection_pool=pool)

여러 스레드/프로세스 환경에서 커넥션 풀이 성능과 안정성을 높인다 

8. 고급 활용 팁

  • 비동기 패턴 사용 시 asyncio‑rediszangy 같은 라이브러리 고려 
  • 데이터 직렬화에는 JSON 또는 Pickle 사용.
  • 트랜잭션으로 race condition 방지.

9. 실무 환경 비교 정리

기능 방법 장점 주의사항
단순 저장/조회 r.set/get 간편함 문자열만 처리
복잡한 구조 r.hset/hgetall 맵 기반 처리 값 크기 제한
성능 최적화 pipeline 네트워크 절약 트랜잭션 주의
메시징 pub/sub 비동기 통신 해당 스코프에서만 유효
커넥션 관리 ConnectionPool 동시 연결 안정 적절한 설정 필요

10. 결론

redis‑py는 설치부터 인증, CRUD, 성능 최적화, 메시징까지 Redis 연동에 필수적인 기능 세트를 제공한다. 특히 파이프라인과 커넥션 풀을 적절히 활용하면 대규모 서비스에서도 안정성과 성능을 기대할 수 있다. 비동기 처리나 Rust 기반 대안이 필요할 경우, zangy 등도 선택지가 될 수 있다. Python‑Redis 연결의 기본부터 고급 활용까지 이 가이드가 도움이 되길 바란다.


출처 (References)

  • redis‑py 공식 가이드 – 설치 및 기본 사용
  • Redis Python 클라이언트 – redis‑py 소개 
  • DataCamp – Python Redis 기초
  • GitHub redis‑py – 파이프라인 및 Pub/Sub 예제 
  • Medium – Redis와 Python 최적 활용법
  • GitHub zangy – Rust 기반 고속 대안
728x90