Redis";“无”;或;空列表或集合";
我目前正在使用“set”结构与redis合作 我想知道是否有可能自动清理空的“集合” 否则,请查找cron/进程定期清理空“set”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 *
更新: 更一般的问题是“(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)