redis集合数据过期_如何从Redis中的集合中自动删除过期的密钥?

我在Redis数据库中有4个密钥。这些密钥从现在开始到期10秒。我已将密钥添加到集合中。当密钥过期时,它们实际上不在数据库中(获取返回空值)。但是,键仍然是该组的成员。该集合将继续存在,直到从集合中删除密钥为止,此时它已从数据库中有效地消失。

密钥过期时,是否可以自动从密钥集中删除密钥?

我正在考虑为每个键维护一个集合以维护它所属的集合(在键和集合之间创建一个有向图集合关系),然后注册键过期事件以在必要时删除集合成员。作为db的使用者,这是一个很大的开销,而不是作为某种背景清理线程。而且,这样的方法将是“尽力而为”清理集合,因为订阅到期事件的客户代码可能会崩溃,无法获得通知,积压等。

我可能已经能够通过将密钥集建模为散列集中的字段来避免任何欺骗,但我希望在实践中每个密钥具有不同的到期TTL。如果这是可能的,那么如何呢?

例如,这里是我的一组“foo”键。

mine:0>set foo1 barA

OK

mine:0>set foo2 barB

OK

mine:0>set foo3 barC

OK

mine:0>set foo4 barD

OK他们可以添加到一个集合。

mine:0>sadd foo foo1 foo2 foo3 foo4

4

mine:0>smembers foo

1) foo1

2) foo3

3) foo4

4) foo2钥匙可以过期...

mine:0>expire foo1 10

1

mine:0>expire foo2 10

1

mine:0>expire foo3 10

1

mine:0>expire foo4 10

1

mine:0>get foo1

NULL

mine:0>get foo2

NULL

mine:0>get foo3

NULL

mine:0>get foo4

NULL

mine:0>get foo5

NULL此时键不存在,但该键确实存在,并且它引用键。

mine:0>smembers foo

1) foo1

2) foo3

3) foo4

4) foo2显式删除键将从集中删除它们,然后在删除所有集合后将其设置为不存在。

mine:0>srem foo foo1

1

mine:0>srem foo foo2

1

mine:0>srem foo foo3

1

mine:0>srem foo foo4

1

mine:0>smembers foo

[nothing returned]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值