복붙노트

[REDIS] 레디 스 만료 접두어 키를 저장

REDIS

레디 스 만료 접두어 키를 저장

주요 접두어로 시간의 X 금액을 만료 값을 저장하려고

나는 레디 스를 사용하여 사용하고 있습니다. 나는 현재 hset를 사용하여 값을 저장하고있어

import redis


r = redis.StrictRedis('localhost')


for i in range(10):
    r.hset('name', i, i)


print(r.hgetall('name'))

내가 개별적으로 각 키를 저장하는 것 같은 다른이 각 키, 시간이 만료합니다.

이걸 어떻게해야합니까?

해결법

  1. ==============================

    1.이것은 직접 수행 할 수 없습니다. 당신은 전체적으로 hset에 만료을 추가 할 수 있지만 개별 필드에 있습니다. 이 작업을 수행하려면 시간이 만료 될 때까지 시간 (초)입니다 r.expire ( '이름', 시간)를 호출 할 수 있습니다.

    이것은 직접 수행 할 수 없습니다. 당신은 전체적으로 hset에 만료을 추가 할 수 있지만 개별 필드에 있습니다. 이 작업을 수행하려면 시간이 만료 될 때까지 시간 (초)입니다 r.expire ( '이름', 시간)를 호출 할 수 있습니다.

    대안으로, 대신 hset 세트 사용할 수 있습니다 :

    for i in range(10):
        r.set('name:' + str(i), i, ex=time_to_expire_s)
    

    '이름'(예를 들어) 당신이로 시작하는 모든 키를 나열하는 좋은 방법이 없습니다 때문에, 일부 기능을 데려 갈 것이다, 그러나 당신이 독립적으로 키 만료를 설정할 수 있습니다.

    두 번째 옵션으로, 당신은 hset의 값의 만료를 설정할 수 있습니다. 이것은 클라이언트 측 로직을 필요로하며, 레디 스는 당신을 위해 말소하지 않을 것이다; 하지만 당신은 뭔가를 같이 할 수있는 :

    for i in range(10):
        r.hset(
            'name',
            i,
            json.dumps({ 'value': i, 'expiration': time.time() + time_to_expire_s })
        )
    

    혹시 그 만료 과거에 값을 읽으면 그리고, 당신은이 캐시 미스로 간주. 당신은 무료로 메모리에 순서대로 키를 만료하려는 경우에 도움이되지 않습니다,하지만 당신의 목표를 가지고있는 경우 키는 정확성 이유는 어떤 종류의, 당신이 힘 작업에 만료됩니다.

  2. from https://stackoverflow.com/questions/36000981/storing-keys-with-prefix-that-expire-in-redis by cc-by-sa and MIT license