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";“无”;或;空列表或集合";_Redis - Fatal编程技术网

Redis";“无”;或;空列表或集合";

Redis";“无”;或;空列表或集合";,redis,Redis,我目前正在使用“set”结构与redis合作 我想知道是否有可能自动清理空的“集合” 否则,请查找cron/进程定期清理空“set” 更新: 更一般的问题是“(nil)”和“(空列表或集合)”之间存在差异(内存使用) 例如: sadd x 1 srem x smembers x (empty list or set) 或 这已经是自动的了。当集合为空时,它将从命名空间中删除 > flushall OK > sadd x 1 2 3 (integer) 3 > keys *

我目前正在使用“set”结构与redis合作

我想知道是否有可能自动清理空的“集合”

否则,请查找cron/进程定期清理空“set”


更新:

更一般的问题是“(nil)”和“(空列表或集合)”之间存在差异(内存使用)

例如:

sadd x 1
srem x
smembers x
(empty list or set)


这已经是自动的了。当集合为空时,它将从命名空间中删除

> flushall
OK
> sadd x 1 2 3
(integer) 3
> keys *
1) "x"
> srem x 1 2 3
(integer) 3
> keys *
(empty list or set)
您不必做任何特定的事情来从这种行为中获益


回答第二个问题,(nil)或(空列表或集合)只是对客户端程序的一种解释。在Redis服务器中,在这两种情况下,条目都已被物理删除,关联的内存已释放。

但在内存中,它的“(空列表或集合)”与“(nil)”相同?因为如果运行saddx1,那么delx和smembers x:prompt(nil)是的,它是相同的。顺便说一句,sadd x 1、del x和smembers x也会在redis cli和redis 2.6中返回“(空列表或集合)”。我确认Didier在redis 2.2.12上所说的话,以防您碰巧有Ubuntu 12.04而没有使用版本2.6。一旦删除最后一项并使其为空,它将从命名空间中删除该项。也就是说,不能创建空列表、设置到期日,然后再添加元素。
> flushall
OK
> sadd x 1 2 3
(integer) 3
> keys *
1) "x"
> srem x 1 2 3
(integer) 3
> keys *
(empty list or set)