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作业,该脚本会定期从集合中删除过期密钥 - 将所有标签名称添加到另一个集合,然后遍历所有标签,然后遍历所有标签标记并检查相应的密钥是否存在 - 如果不存在,则调用SREM
。
我不认为这将是一种有效的方式,我可能希望保持标签尽可能干净,因为这些集合的大小可能会影响通过多个标签进行搜索的性能(SINTER
)。有更多的“内部”方式吗?
是的,这是一个体面的方式,我可能会用类似的方式处理这个问题。既然标签集合中过期成员的存在并不是以其他方式表现的问题,那么我很可能会使用定期运行的cron而不是deamon--将投票数限制在足够的最小值。 – Przemek