Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否将Redis expire添加到所有名称空间密钥?_Redis - Fatal编程技术网

是否将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并存储为一个字符串。但这不是一个很好的解决方案


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

解决问题的常见方法是使用名称空间键,而不是使用名称空间键。但是哈希不支持列表,所以它对您不起作用。