Redis에서 특정 키가 아니라 집합 구성원에 대해 TTL (time to live)을 설정할 수 있습니까?집합 구성원에 대한 TTL
Redis 문서에서 제안한 태그 구조를 사용하고 있습니다. 데이터는 간단한 키 - 값 쌍이며 태그는 각 태그에 해당하는 키가 들어있는 세트입니다 (예 : 예상대로
> SETEX id:id_1 100 'Lorem ipsum'
OK
> SADD tag:tag_1 id:id_1
(integer) 1
핵심 id:id_1
만료됩니다하지만 난 tag:tag_1
세트에서 해당 구성원을 제거하는 효율적인 방법을 볼 수 없습니다.
한 가지 방법은 주기적으로 만료 된 키를 제거하는 스크립트를 포함하는 cron 작업을 사용하는 것입니다. 모든 태그 이름을 다른 세트에 추가 한 다음 모든 태그를 반복하고 각각의 ID를 모두 반복합니다. 태그를 찾고 해당 키가 있는지 확인하십시오. 그렇지 않은 경우 SREM
을 호출하십시오.
나는 효율적인 방법이 될 것이라고 생각하지 않는다. 아마도 세트의 크기가 여러 태그 (SINTER
)로 검색하는 성능에 영향을 줄 수 있으므로 가능한 한 깨끗하게 태그를 유지하려고한다. 더 "내부"적인 방법이 있습니까?
예, 괜찮은 방법이며 비슷한 것으로 문제를 해결할 것입니다. 태그 집합에 만료 된 멤버가 있기 때문에 다른 방법으로는 성능에 문제가 없으므로 주기적으로 deamon의 cron istead를 사용하여 설문 조사를 충분한 최소값으로 제한 할 가능성이 큽니다. – Przemek