将Redis过期添加到整串命名空间密钥?

时间:2014-04-25 14:57:24

标签: redis

说我有user + id命名空间密钥

  • lastMessages
  • isNice属性

所以 - 它是这样的:

>lpush user:111:lastMessages a
>lpush user:111:lastMessages b
>lpush user:111:lastMessages c

确定

让我们添加isNice道具:

>set user:111:isNice 1

所以:让我们看一下111的所有键:

> keys user:111*

结果:

1) "user:111:isNice"
2) "user:111:lastMessages"

好的,但是

我希望expire命名空间条目全部! (所以当超时 - 所有键应该立即进行。我不想开始管理每个命名空间键和剩余时间,因为并非所有道具都同时添加 - 但我想要所有道具在同一时间死了......)

问题:

这是否意味着我必须为每个命名空间的密钥条目设置过期?

如果没有,这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

是的,你设置它的方式,这些都只是单独的键。您可以将命名空间视为您将访问Redis商店的所有人的理解

  

好的伙计们,这是这笔交易。我们都将使用看起来像这样的键:

user:{user_id}:lastMessages
     

这样,我们都知道在哪里可以获得用户号码325的最后消息。

但实际上,user:111:lastMessagesuser:111:isNice之间没有任何共享。

修复

您可以执行您正在描述的方法是使用哈希。您将创建一个密钥为user:111的哈希,然后添加字段lastMessagesisNice

> hset user:111 lastMessages "you are my friend!"
> hset user:111 isNice true
> expire user:111 1000

或者,一下子,

> hmset user:111 lastMessages "you are my friend!" isNice true
> expire user:111 1000

这是page describing redis' data types。向下滚动到它所说的位置'哈希'了解更多信息。

修改

啊,我没有注意到你在使用清单。

如果您没有太多消息(比如20岁以下),您可以将它们序列化为JSON并将它们存储为一个字符串。但这不是一个很好的解决方案。

最干净的方法可能是设置两个过期。