在Redis中是否可以不为特定密钥设置TTL(生存时间),而是为一组成员设置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
)的搜索性能。还有更“内部”的方式吗?