当前位置: 首页 > 面试题库 >

设定成员的TTL

鲁华灿
2023-03-14
问题内容

在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)的搜索性能。还有更“内部”的方式吗?


问题答案:

无法直接使列表,集合或zset中的项目失效。

您需要实现一种机制,以便在主项目到期时得到通知,以便可以相应地维护相应的集合。

请参阅此问题的答案,我认为它适用于您的用例(按ID替换会话,按标签替换用户):



 类似资料:
  • 我在使用discord。js的机器人制作,我一直得到这个错误,当我试图使一个音乐机器人??我不知道如何定义会员。它甚至不会加入频道或播放音乐,唯一有效的功能是告诉机器人需要一个链接才能继续

  • 主要内容:在类体中和类体外定义成员函数的区别类可以看做是一种数据类型,它类似于普通的数据类型,但是又有别于普通的数据类型。类这种数据类型是一个包含成员变量和成员函数的集合。 类的成员变量和普通变量一样,也有数据类型和名称,占用固定长度的内存。但是,在定义类的时候不能对成员变量赋值,因为类只是一种数据类型或者说是一种模板,本身不占用内存空间,而变量的值则需要内存来存储。 类的成员函数也和普通函数一样,都有返回值和参数列表,它与一般函数的区别是

  • 问题内容: 我有一个Redis集。此集最多可存储20个成员(添加命令)。我的问题是;我需要在需要时更新该成员。成员每个成员最多需要进行10次修改。集合成员是json作为字符串。我脑子里只有soltotoin,也没有让所有成员更新并重新创建该集合。但这似乎很愚蠢。 我知道有一个排序集及其分数支持,这似乎也很合适,我还需要像JSON中的数据一样更新分数,但是我只是想知道是否有任何方法可以有效地更新成员

  • 下面是一个人为的例子:(实际代码中使用的命名方案太令人困惑) 我有一个班主任,他是第三方图书馆的一部分,不可更改。我也有一些课程延伸到父亲;比如儿子。祖父有一个类似这样的构造函数: 这个构造函数中实际发生的事情并不重要。重要的是,它所做的任何事情都必须由所有派生类完成,因此对的调用是每个派生类构造函数的第一行。这里的含义是,祖父的所有后代的构造函数,无论距离有多远,都必须始终调用super(或调用

  • 本文向大家介绍在C ++中定义静态成员,包括了在C ++中定义静态成员的使用技巧和注意事项,需要的朋友参考一下 可以使用static关键字定义C ++中类的静态成员。内存中只有静态类成员的一个副本,而不管该类的对象数目如何。因此,静态成员由所有类对象共享。 如果没有以任何其他方式初始化该类的第一个对象,则在创建该类的第一个对象时,该静态类成员将初始化为零。 演示静态类成员定义的程序如下: 示例 上

  • 我需要通过LDAP(AD)为我们的Jenkins设置身份验证。我能够大规模地设置身份验证,但我必须将其缩小到某个组的某个成员,我的LDAP过滤在这里失败。 这是我要针对的完整DN: CN=jenkins组,OU=App 1,OU=应用程序,OU=公司组,OU=公司,DC=我的,DC=域,DC=com 在jenkinsgroup组中,我将用户存储为成员属性,只有他们才能访问。 Jenkins LDA