说我有user + id
的命名空间密钥:
所以 - 它是这样的:
>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命名空间条目全部! (所以当超时 - 所有键应该立即进行。我不想开始管理每个命名空间键和剩余时间,因为并非所有道具都同时添加 - 但我想要所有道具在同一时间死了......)
问题:
这是否意味着我必须为每个命名空间的密钥条目设置过期?
如果没有,这样做的正确方法是什么?
答案 0 :(得分:1)
是的,你设置它的方式,这些都只是单独的键。您可以将命名空间视为您将访问Redis商店的所有人的理解
好的伙计们,这是这笔交易。我们都将使用看起来像这样的键:
user:{user_id}:lastMessages
这样,我们都知道在哪里可以获得用户号码325的最后消息。
但实际上,user:111:lastMessages
和user:111:isNice
之间没有任何共享。
修复
您可以执行您正在描述的方法是使用哈希。您将创建一个密钥为user:111
的哈希,然后添加字段lastMessages
和isNice
。
> 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并将它们存储为一个字符串。但这不是一个很好的解决方案。
最干净的方法可能是设置两个过期。