[Python] Redis 데이터베이스를 접속해서 사용하는 방법
안녕하세요. 명월입니다.
이 글은 Python에서 Redis 데이터베이스를 접속해서 사용하는 방법에 대한 글입니다.
Redis 데이터베이스는 RDB 종류가 아닌 NoSQL 종류의 Key-Value타입의 데이터베이스입니다. 간단하게 공유 메모리 데이터베이스입니다.
이전 글에서 Linux 환경에서 설치 및 사용하는 방법에 대해 설명한 적 있습니다.
링크 - [CentOS] Redis 데이터베이스 설치와 명령어 사용법
그럼 Redis 데이터베이스를 Python에서 사용해 보도록 하겠습니다.
먼저 Python에서 Redis 데이터베이스를 사용하기 위해서는 Redis 라이브러리를 설치해야 합니다.
pip3 install redis
![](https://blog.kakaocdn.net/dn/77SrL/btrtOzf0iMx/kwyhZTB7MELMrk9AT9R4u1/img.png)
저는 이미 설치가 되어 있어서 설치되어있다고 표시가 되네요.. 설치가 되지 않으신 분들을 위 명령어로 설치하면 됩니다.
그럼 다시 Python 소스에서 Redis를 사용해 보도록 하겠습니다.
# redis 라이브러리 선언
import redis
# 호스트와 포트 설정, 데이터베이스 설정하여 connection 취득
with redis.StrictRedis(host='192.168.0.201', port=6379, db=0) as conn:
# test를 키로 hello world 값을 입력
conn.set('test', 'hello world')
# test를 키로 데이터를 출력
data = conn.get('test')
# 콘솔 출력
print(data)
# 호스트와 포트 설정, 데이터베이스 설정하여 pool를 설정
redis_pool = redis.ConnectionPool(host='192.168.0.201', port=6379, db=0, max_connections=4)
# pool로 connection을 취득
with redis.StrictRedis(connection_pool=redis_pool) as conn:
# test1를 키로 hello world1 값을 입력
conn.set('test1', 'hello world1')
# test를 키로 데이터를 출력
data = conn.get('test1')
# 콘솔 출력
print(data)
![](https://blog.kakaocdn.net/dn/eaIrO8/btrtRWCyCBE/fCKmky8ynRBd0DLyyXF6Gk/img.png)
![](https://blog.kakaocdn.net/dn/bdZbDP/btrtIOSQjGV/vMSiQM6lSoKfaQcZPchk10/img.png)
기본적인 사용법은 key를 이용해 데이터를 입력하고 취득하는 함수합니다.
먼저 접속 방법에는 StrictRedis를 이용해서 직접 connection을 취득하는 방법이 있고 pool를 먼저 생성해서 pool로 connection을 취득하는 방법입니다.
어느 쪽이 더 좋다라고 하기는 어렵지만 pool이 커넥션을 관리하기에는 더 용이해 보이네요... 위는 싱글 프로세스로 움직이니 pool를 사용하지 않아도 관리가 되지만 만약 멀티 thread 환경이라면 connection 관리가 필요하니 pool를 사용하는 편이 더 좋을 듯 싶네요.
# redis 라이브러리 선언
import redis
# 호스트와 포트 설정, 데이터베이스 설정하여 connection 취득
with redis.StrictRedis(host='192.168.0.201', port=6379, db=0) as conn:
# test를 키로 hello world 값을 입력, 500초의 만료시간
conn.set('test', 'hello world', 500)
# test 키의 만료시간을 출력
print(conn.ttl('test'))
# 만료시간 설정 100초
conn.expire('test', 100)
# test 키의 만료시간을 출력
print(conn.ttl('test'))
# test를 키로 데이터를 출력
data = conn.get('test')
# 콘솔 출력
print(data)
# 모든 키 지우기
#conn.flushall()
![](https://blog.kakaocdn.net/dn/ETrUK/btrtTLOgl4m/HUVpVJoLNqxNkUwyb60YB0/img.png)
![](https://blog.kakaocdn.net/dn/d6QIgs/btrtIO6kTQa/mN7Vymn9KEkfr0ZS7RJMhK/img.png)
위 소스는 만료시간 설정입니다. 단위는 초 단위로 이루어져 있습니다.
다음은 Redis에서 사용될 List와 Map, Set, SortedSet 형식의 자료형입니다.
# redis 라이브러리 선언
import redis
# 호스트와 포트 설정, 데이터베이스 설정하여 connection 취득
with redis.StrictRedis(host='192.168.0.201', port=6379, db=0) as conn:
# 리스트에서 오른쪽 입력
conn.rpush("list", "1");
# 리스트에서 왼쪽 입력
conn.lpush("list", "2");
# 리스트 데이터 출력 - 2, 1
for i in conn.lrange('list',0 ,10):
# 콘솔 출력
print(i)
# 콘솔 출력
print('lpop list')
# 리스트 왼쪽 pop - 2
print(conn.lpop('list'))
# 콘솔 출력
print('list')
# 리스트 데이터 출력 - 1
for i in conn.lrange('list',0 ,10):
# 콘솔 출력
print(i)
# 개행
print()
# Hash 형식의 key-value 값 입력
conn.hset("map", "a", "1")
conn.hset("map", "b", "2")
conn.hset("map", "c", "3")
# Hash 형식의 모든 데이터 출력
print(conn.hgetall('map'))
# Hash 형식의 a key의 데이터 출력
print(conn.hget('map', 'a'))
# 개행
print()
# Set 형식의 값 입력
conn.sadd('set', 'C')
conn.sadd('set', 'B')
conn.sadd('set', 'A')
# 중복은 입력 안된다.
conn.sadd('set', 'A')
conn.sadd('set', 'A')
# Set 형식 출력
print(conn.smembers('set'))
# Set 형식의 값 입력 - 변수 명 set1
conn.sadd('set1', 'A')
conn.sadd('set1', 'D')
# set과 set1의 교집합
print(conn.sinter('set', 'set1'))
# set과 set1의 합집합
print(conn.sunion('set', 'set1'))
# 개행
print()
# SortedSet 형식의 값 입력
conn.zadd('sortedset', {'B': 1})
conn.zadd('sortedset', {'A': 3})
conn.zadd('sortedset', {'C': 0})
# 10개의 데이터 출력
print(conn.zrange('sortedset',0 , 9))
# 10개의 데이터 출력 - 내림차순
print(conn.zrange('sortedset',0 , 9, desc=True))
# 2개의 데이터 출력 - 내림차순
print(conn.zrange('sortedset',0 , 1, desc=True))
# 모든 키 지우기
#conn.flushall()
![](https://blog.kakaocdn.net/dn/cmzLlW/btrtVnTU2hh/7MJfAK83ON8mglWeteD0Q0/img.png)
![](https://blog.kakaocdn.net/dn/b231PI/btrtRWvLift/zRcQVrN4Lz8XA3VUBPVeQ0/img.png)
Python은 사용하는 사람에 따라 다르기는 하지만, 저는 무슨 프로그램을 만들기보다는 프로젝트의 보조 수단으로 배치 스크립트등으로 활용을 자주하는 편입니다.
그럼에 있어서 여러 로컬에서 데이터를 공유하거나 Java나 C#에서 Redis를 사용하게 되면 그 값을 확인하거나 테스트하는 목적으로 사용되곤 합니다.
여기까지 Python에서 Redis 데이터베이스를 접속해서 사용하는 방법에 대한 글이었습니다.
궁금한 점이나 잘못된 점이 있으면 댓글 부탁드립니다.