是否将Redis expire添加到所有名称空间密钥?
假设我有一个是否将Redis expire添加到所有名称空间密钥?,redis,Redis,假设我有一个user+id的命名空间键: 最后消息 isNice属性 所以-它是这样的: >lpush user:111:lastMessages a >lpush user:111:lastMessages b >lpush user:111:lastMessages c 嗯 让我们添加isNice道具: >设置用户:111:isNice 1 所以:让我们看看111的所有键: >按键用户:111* 结果: 1) "user:111:isNice" 2) "user:11
user+id
的命名空间键:
- 最后消息
- isNice属性
>lpush user:111:lastMessages a
>lpush user:111:lastMessages b
>lpush user:111:lastMessages c
嗯
让我们添加isNice
道具:
>设置用户:111:isNice 1
所以:让我们看看111
的所有键:
>按键用户:111*
结果:
1) "user:111:isNice"
2) "user:111:lastMessages"
好的,但是
我想在它的整个名称空间的条目!(因此,当超时时,所有的键都应该立即消失。我不想开始管理每个带名称空间的键和剩余的时间,因为不是所有的道具都在同一时间添加-但我希望所有道具都在同一时间消失…)
问题:
这是否意味着我必须为每个带名称空间的键条目设置expire
如果没有,正确的方法是什么 是的,按照您的设置方式,这些都是单独的键。您可以将名称空间看作是您与所有将访问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
这是一本书。向下滚动到显示“哈希”的位置以获取更多信息
编辑
啊,我没注意到你在用列表
如果没有太多的消息(比如20条以下),可以将它们序列化为JSON并存储为一个字符串。但这不是一个很好的解决方案
最干净的方法可能只是设置两个过期时间。解决问题的常见方法是使用名称空间键,而不是使用名称空间键。但是哈希不支持列表,所以它对您不起作用。