TTL para um membro definido
É possível no Redis definir o TTL (time to live) não para uma chave específica, mas para um membro de um conjunto?
Estou usando uma estrutura para tags proposta pela documentação do Redis - os dados são pares de valor-chave simples e os tags são conjuntos contendo chaves correspondentes a cada tag, por exemplo,
> SETEX id:id_1 100 'Lorem ipsum'
OK
> SADD tag:tag_1 id:id_1
(integer) 1
A chaveid:id_1
irá expirar como esperado, mas eu não vejo uma maneira eficiente de remover o membro correspondente dotag:tag_1
conjunto.
Uma maneira que surgiu foi usar uma tarefa cron contendo um script que removeria chaves expiradas de conjuntos periodicamente - adicionando todos os nomes de tags a outro conjunto e, em seguida, percorrendo todas as tags, então todos os ids correspondentes a cada tag e verificando se chave correspondente existe - se não, chamandoSREM
.
Eu não acho que será uma maneira eficiente e eu gostaria de manter as tags o mais limpas possível, porque o tamanho dos conjuntos provavelmente afetará o desempenho da pesquisa por várias tags (SINTER
). Existe uma maneira mais "interna"?