2016-09-22 3 views
0

원하는 크기로 ltrim을 수행하여 고정 크기의 목록을 쉽게 만들 수 있습니다. 그러나 크기 제한이 아닌 시간 제한이있는 데이터가 포함 된 목록을 유지 관리하는 방법은 무엇입니까?redis의 시간 제한 목록

예. 지난 10 분 동안 내 웹 사이트에 로그인 한 모든 user_ids의 목록을 어떻게 유지합니까? 이를 달성하는 가장 효율적인 방법의 실례를 제시하십시오. 어쩌면 잘못된 데이터 형식으로이 문제에 접근하고 있습니까?

답변

2

목록 대신 정렬 된 집합을 사용하십시오. 유닉스 타임 스탬프를 항목 점수로 사용하십시오.

은 ZSET에 항목을 추가하려면 : ZRANGEBYSCORE myzset (<current timestamp - 600 seconds> (+inf

하는 최신 처음으로 ZREVRANGEBYSCORE을 대체 활용하려면 다음 ZADD myzet <current timestamp> item

가 삽입 시간으로 분류 마지막 10 분의 항목, 나이 첫째을 검색하려면 ZRANGEBYSCORE.

제거하려면 만료 된 항목 :

ZREMRANGEBYSCORE -inf (<current timestamp - 600 seconds>