Python/Utils

파이썬 redis 유효 시간 ttl 설정 방법 예제

jimmy_AI 2024. 4. 16. 00:43
반응형

Python에서 redis 데이터베이스를 활용할 때,

특정 key에 대한 유효 시간인 ttl을 설정하는 방법을

간략한 예제를 통하여 다루어보도록 하겠습니다.

 

다음 예시는 redis 데이터베이스의 유효 시간을 1분으로 설정하는 예시입니다.

import redis

# redis 데이터베이스 연결
r = redis.Redis(host='localhost', port=6379, db=0)

r.set('my_key', 'my_value') # my_key - my_value를 쌍으로 가지는 데이터 저장
r.expire('my_key', 60) # 키 'my_key'의 TTL을 1분으로 설정(초 단위)

위의 예제처럼 데이터베이스의 expire 메소드를 통하여 

해당 key에 대해서 원하는 유효 시간을 초 단위로 설정할 수 있습니다.

 

이 기능을 응용하여, 1일 단위로 timestamp 값을 통하여

새로운 key를 생성하는 예시는 다음과 같습니다.

(key가 없다면 ttl 1일로 설정, 있다면 데이터만 세팅)

from datetime import datetime
import redis
import time

# redis 데이터베이스 연결
r = redis.Redis(host='localhost', port=6379, db=0)

# 현재 타임스탬프를 기준으로 날짜에 맞는 key 생성
def get_daily_key(ts):
    date = datetime.fromtimestamp(float(ts))
    key = f'daily-{date.year}-{date.month:02d}-{date.day:02d}'
    return key
    
ts = time.time()
key = get_daily_key(ts)
data = '데이터로 저장할 값'

# key의 존재 여부를 검사하여 없다면 생성하면서 ttl 설정
if r.exists(key):
    r.set(key, data)
else:
    r.set(key, data)
    r.expire(key, 86400) # 1일을 기준으로 ttl 설정