[caching] Redis : 배열 또는 정렬 된 집합의 요소를 만료 할 수 있습니까?

현재 전체 키 / 값 쌍만 만료 될 수 있습니까? 목록 유형 구조에 값을 추가하고 삽입 후 1 시간 후에 자동으로 제거되도록하려면 어떻게해야합니까? 현재 가능합니까, 아니면 수동으로 제거를 수행하려면 크론 작업을 실행해야합니까?



답변

현재 전체 키 / 값 쌍만 만료 될 수 있습니까?

내가 아는 한, 그리고 만료 에 대한 주요 명령 및 문서에 따르면 현재 만료를 기본 데이터 구조가 아닌 특정 키에만 설정할 수 있습니다. 그러나 설명 된 대체 솔루션과 함께이 기능에 대한 Google 그룹에 대한 토론 이 있습니다.


답변

이 문제를 아주 잘 해결하는 일반적인 패턴이 있습니다.

정렬 된 세트를 사용하고 타임 스탬프를 점수로 사용합니다. 그런 다음 점수 범위별로 항목을 삭제하는 것은 간단합니다. 주기적으로 또는 모든 쓰기에 대해서만 수행 할 수 있으며, 읽기는 항상 범위를 벗어난 요소를 무시하고 점수 범위 만 읽습니다.

추가 정보 : https://groups.google.com/forum/#!topic/redis-db/rXXMCLNkNSs


답변

나는 이것을 처리하는 다른 방법을 찾았습니다. 이것이 여러분에게 도움이되는지 모르겠지만 여기에 있습니다.

해시와 정렬 된 집합은 GUID로 연결됩니다.

  1. ‘x’초 후에 만료되도록 설정된 해시가 있습니다.
  2. 범위가 지정된 쿼리에 사용되는 정렬 된 집합이 있습니다.
  3. 둘 다에 대한 데이터가 트랜잭션에 추가되므로 하나가 실패하면 둘 다 실패합니다.
  4. 범위가 지정된 쿼리에서 ‘EXISTS’를 사용하여 결과가 반복 될 때 해시 된 값이 있는지 확인합니다.
  5. 존재하지 않는 경우 만료 된 것이므로 정렬 된 세트에서 항목을 삭제하십시오.

답변