레디스: Redis
레디스 5 - Redis 파이썬 클라이언트 사용법
카테고리 : 개발자 유미
https://youtu.be/-KWSbCXIRRQ?si=Lwxc_uUO6ICgBYJh
레디스 4 : Redis 스냅샷, database 설정
Redis 클라이언트란?
Redis 클라이언트는 애플리케이션 코드에서 Redis 서버와 통신할 수 있도록 도와주는 라이브러리다.
- Redis 프로토콜 직접 구현 필요 없음
- 명령어를 메소드 호출 형태로 사용
- 커넥션 관리, 직렬화, 인증 처리 포함
Python에서는 가장 널리 쓰이는 클라이언트가 redis (redis-py)다.
Python redis 모듈 설치
환경에 따라 아래 중 하나를 사용하면 된다.
# pip3 사용
pip3 install redis
# pip 사용
pip install redis
# 특정 Python 버전 명시
python3.11 -m pip install redis
설치가 끝나면 코드에서 바로 import 가능하다.
Redis 모듈 불러오기 및 연결 객체 생성
import redis
redis_connect = redis.Redis(
host='레디스_서버_IP',
port=6379,
decode_responses=True,
password='비밀번호',
db=0
)
이 객체 하나로 Redis 명령어 대부분을 메소드 형태로 실행할 수 있다.
Redis 객체 생성자 파라미터 정리
실무에서 자주 사용하는 옵션 위주로 정리하면 다음과 같다.
host Redis 서버 IP 또는 도메인
port Redis 포트 (기본값: 6379)
decode_responses
True: 결과를 문자열(str)로 반환False: bytes로 반환 👉 Python에서는 보통True권장
username Redis ACL 사용자 (기본값: default)
password Redis 인증 비밀번호 (비밀번호 미설정 시 생략 가능)
db Redis database 번호 (기본값: 0)
ssl / ssl_certfile / ssl_keyfile / ssl_ca_certs TLS 기반 Redis 접속 시 사용
Python에서 Redis 명령어 사용하기
아래 예제는 CLI에서 사용하던 명령을 Python 코드로 옮긴 형태다.
Redis 연결 및 기본 String CRUD
import redis
redis_connect = redis.Redis(
host='아이피',
port=6379,
decode_responses=True,
password='비밀번호'
)
# String SET
redis_connect.set("2", "lee")
redis_connect.set("3", "jeong")
redis_connect.set("4", "ahn")
# 만료 시간 설정 (초 단위)
redis_connect.expire("3", 100)
# String GET
value = redis_connect.get("2")
print(value) # lee
# 존재하지 않는 키는 None 반환
데이터 삭제
redis_connect.delete("4")
키 조회: scan vs keys
# scan (권장)
cursor, keys = redis_connect.scan(0)
print(keys)
# keys (주의)
keys = redis_connect.keys("*")
print(keys)
중요한 차이점:
scan- 비차단
- 대량 키 환경에서도 안전
- 운영 환경 권장
keys- 모든 키를 한 번에 조회
- 키 많으면 Redis 전체 블로킹
- 운영 환경 사용 금지에 가깝다
실무 관점에서 꼭 짚고 갈 포인트
이 단계에서 기억해야 할 핵심은 이것이다.
- Redis는 DB가 아니라 보조 저장소
- 네트워크 장애, Redis 장애는 언제든 발생
get()결과는 항상None가능성 고려- 캐시는 없어도 시스템이 동작해야 한다
- Redis를 신뢰하면 장애가 커진다
그래서 실무 코드에서는 보통:
value = redis_connect.get(key)
if value is None:
# DB 조회
# Redis 재저장
같은 패턴이 기본이 된다.
정리
이번 글에서 다룬 내용을 요약하면 다음과 같다.
- Python에서는 redis-py로 Redis를 사용
- Redis 명령은 대부분 메소드 형태로 제공
- decode_responses=True는 거의 필수
- scan과 keys 차이는 반드시 이해
- Redis는 “있으면 빠르고, 없어도 살아야” 한다