2017-12-31 233 views
1

사용자의 항목 목록을 저장하는 방법을 찾고 있는데,이 목록은 24 시간 내에 만료됩니다. Redis를 사용하여이를 수행 할 수있는 방법이 있습니까? 목록을 사용하고 각 개별 항목의 만료를 설정하는 것을 생각하고 있었지만 더 좋은 방법이 있습니까?항목이 만료 된 Redis 목록?

답변

3

아니요, 각 항목의 만료 시간을 LIST으로 설정할 수 없습니다. 전체 LIST에 대해서만 만료를 설정할 수 있습니다.

SET user1:item1 value EX 86400 
SET uesr1:iter2 value EX 86400 
SET user2:item1 value EX 86400 

는 지정된 사용자의 모든 항목, 당신은 패턴으로 SCAN 명령을 사용할 수 있습니다 얻으려면 (또는 사용 : 당신이 원하는 것을 달성하기 위해

, 당신은 각 항목에 대한 키가 필요 Keyspace Notification는) 그러나보다 복잡한 작업과 함께, 더 나은 성능을 달성하기 : 허용 대답에 언급 한 바와 같이

SCAN 0 MATCH user1:* 
2

가, 레디 스에서 만기에만 키 수준에서 수행됩니다 - 중첩 된 요소가 만료 할 수 없습니다.

만료 요소가있는 목록을 구현하려면 정렬 된 집합 데이터 구조를 사용할 수 있습니다. 모든 회원의 점수는 현재 신기원이어야하므로 삽입 순서는 유지됩니다. 값 (구성원) 고유하지 않은 경우,

ZADD user1:items 1514822755 1514822755:value 
ZADD user1:items 1514822758 1514822758:value 

이 항목을 "만료" -inf에서 ZREMRANGEBYSCORE 현재의 시대에서 24 시간을 뺀를 호출하려면 :, 신기원을 연결하여 그래서 예컨대 그들을합니다.