Python/Utils

파이썬 redis 함수 정리 및 예제

jimmy_AI 2024. 7. 16. 00:12
반응형

Python에서 redis를 활용할 때 사용할 수 있는 대표적인 함수들을 정리해보고,

간단한 예제를 통하여 사용 방법을 이해해보도록 하겠습니다.

 

 

참고: redis 데이터 저장 방식

redis에서는 두 가지 방법을 통하여 데이터를 저장할 수 있습니다.

 

I. key - value 방식

딕셔너리에서 key - value를 저장하는 방식과 동일하며,

"name" -> "jimmy" 와 같은 매칭 관계를 의미합니다.

 

 

II. hash - key - value 방식

key - value 쌍을 hash 값을 기준으로 추가 매칭하는 관계를 의미합니다.

예를 들면,"7월방문자" -> "name" -> "jimmy"처럼

처음에 "7월방문자"라는 hash 정보가 위의 방식의 앞 부분에 추가로 포함됩니다.

 

 

이제 대표적인 함수들의 사용법을 이해시키기 위하여

다음과 같은 간단한 redis 클라이언트를 선언해보도록 하겠습니다.

import redis

# Redis 클라이언트 생성
client = redis.StrictRedis(host='localhost', port=6379, db=0)

 

 

1. set / get 함수(key - value 방식)

set 함수는 새로운 key - value 방식의 값을 추가합니다.

client.set('name', 'jimmy')

 

get 함수는 key의 값을 기준으로 value 값을 가져옵니다.

(단, 온전한 값을 출력하기 위해서는 디코딩 과정이 필요합니다.)

value = client.get('name')
print(value.decode('utf-8')) # jimmy

 

 

2. delete / exists 함수(key - value 방식)

delete 함수는 특정 키의 값을 삭제합니다.

client.delete('name')

 

exists 함수는 특정 키가 존재하는지 확인합니다.

exists = client.exists('name')
print(exists)  # 0 (키가 미존재), 1 (키가 존재)

 

 

3. keys 함수(key - value 방식)

특정 패턴에 매칭되는 key들의 목록을 모두 가져옵니다.

all_keys = client.keys('*') # 모든 키의 목록을 가져오는 예시
user_start_keys = client.keys('user*') # user로 시작하는 키의 목록을 가져오는 예시

 

 

4. hset / hget 함수(hash - key - value 방식)

hash의 특정 필드에 값을 설정하기 위해서는

위에서 다룬 set이 아닌 hset 함수를 사용해야 합니다.

client.hset('2407', 'name', 'jimmy')

 

 

hget 함수는 hash와 key 값을 기준으로 최종 value를 가져오는 함수입니다.

client.hget('2407', 'name') # jimmy

 

 

5. hgetall 함수(hash - key - value 방식)

hgetall 함수는 hash를 기준으로 저장된 key - value들을 모아서 반환해줍니다.

이 값들을 모아서 디코딩된 딕셔너리로 반환하는 예시는 다음과 같습니다.

client.hset('user:1', 'name', 'jimmy')
client.hset('user:1', 'age', 28)

user_data = client.hgetall('user:1')
decoded_user_data = {k.decode('utf-8'): v.decode('utf-8') for k, v in user_data.items()}
print(decoded_user_data)

# 출력 결과
{
    'name': 'jimmy',
    'age': '28'
}

 

 

6. hkeys 함수(hash - key - value 방식)

hkeys 함수는 해당 hash에 저장된 모든 key들의 값을 불러오는 역할을 수행합니다.

client.hset('user:1', 'name', 'jimmy')
client.hset('user:1', 'age', 28)

key_list = client.hkeys('user:1') # [b'name', b'age']
print([field.decode('utf-8') for field in key_list]) # ['name', 'age']

 

 

7. hdel / hexists 함수(hash - key - value 방식)

위에서 다룬 del 및 exists 함수와 사용 방법은 비슷합니다.

여기서는 hash - key 조합으로 삭제 및 존재 여부를 조회하게 됩니다.

client.hdel('user:1', 'age') # 특정 hash - key 조합 필드 삭제

client.hexists('user:1', 'name') # user:1 hash에 name key가 존재하면 1, 그렇지 않으면 0