[REDIS] 레디 스 : 설정에서 키 값 쌍으로 설정 시간 제한
REDIS레디 스 : 설정에서 키 값 쌍으로 설정 시간 제한
I 키 'A'및 값 '1', '2', '3'에 레디 스의 세트를 갖는다. 다른이 세트의 각 키 - 값 쌍 시간 만료 설정하는 방법이있다.
(예를 들어, 'A', '1')으로 ( 'A', '2', 120) 초 후에 만료되는 60 초 동안 만료한다.
해결법
-
==============================
1.불행하게도. 이 기능은 과거에 여러 번 요청했지만 레디 스 ' "용기"(즉,리스트, 해시, 세트와 정렬 된 세트), 회원 당 만료를 지원하지 않습니다.
불행하게도. 이 기능은 과거에 여러 번 요청했지만 레디 스 ' "용기"(즉,리스트, 해시, 세트와 정렬 된 세트), 회원 당 만료를 지원하지 않습니다.
당신은, 그러나, 그 결과를 달성하기 위해 자신의 논리를 구현할 수 있습니다. 이 문제를 해결하기 위해 여러 가지 방법이 있습니다 - 여기에 하나의 예입니다. 대신 세트를 사용하는 정렬 된 세트 (ZSET)를 사용하고 획기적인 값을 사용하여 만료 시간에 각 멤버의 점수를 설정합니다. 워크 플로우의이 유형은 예를 들어, 루아 스크립트를 사용하여 구현 될 수있다. 회원은 같은 것을 사용 추가하려면 :
redis.call('zadd', KEYS[1], os.time()+ARGV[1], ARGV[2])
그리고 EVAL 그것은 '1 60 1'을 사용하여 '1 (120) 2'등의 인수, 귀하의 예를 당. 실제로 "만료"로 설정에서 항목, 당신은 시간이 경과되면 삭제해야합니다. 당신은 당신의 목록을 검색 정기 간행물 프로세스를 구현하거나 그 접근에 그 중 하나를 할 수 있습니다. 예를 들어, 다음 루아는 회원을 만료 할 수 있습니다 :
redis.call('zremrangebyscore', KEYS[1], '-inf', os.time())
그리고 EVAL은 여러분의 예에 따라 인수로 '1'을 사용.
편집 : 파이썬을 사용하여 위를 달성하기 위해
import time import redis def add(r, key, ttl, member): r.zadd(key, member, int(time.time()+ttl)) def expire(r, key): r.zremrangebyscore(key, '-inf', int(time.time())) ... r = redis.Redis() add(r, 'a', 1, 60) add(r, 'a', 2, 120) # periodically or before every operation do expire(r, 'a')
from https://stackoverflow.com/questions/24105074/redis-to-set-timeout-for-a-key-value-pair-in-set by cc-by-sa and MIT license
'REDIS' 카테고리의 다른 글
[REDIS] 레디 스에서 파이프 라인을 사용할 때 왜 이렇게 10 만 개 레코드로 둔화되고? (0) | 2019.12.31 |
---|---|
[REDIS] 방법 레디 스에서 특정 패턴과 일치하지 않는 키를 얻으려면? (0) | 2019.12.31 |
[REDIS] 레디 스 읽을 수없는 저장 악센트 (0) | 2019.12.31 |
[REDIS] 이니셜 라이저에서 cache_store 설정 (0) | 2019.12.31 |
[REDIS] 데이터 구조 스레드 안전에 레디 스 작업은인가 (0) | 2019.12.31 |