2012-12-11 31 views
6

我目前正在使用「set」結構使用redis。Redis「nil」或「空列表或集合」

我想知道是否有可能自動清空「set」?

否則找一個cron /過程清潔定期清空 「設置」


UPDATE:

更通用的問題,是有差異(內存使用)之間 「(無)」和 「(空列表或集合)」

例如:

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

sadd x 1 
del x 
smembers x 
(nil) 

回答

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) 

您無需做任何特定的操作即可從此行爲中受益。

要回答你的第二個問題,(零)或(空列表或集合)只是對客戶端程序的解釋。在Redis服務器中,在這兩種情況下,條目都被物理刪除,並釋放相關的內存。

+0

但在內存中「(空列表或設置)」與「(無)」相同嗎?因爲如果你運行sadd x 1,那麼del x和smembers x:prompt(nil) – Kakawait

+0

是的,它是一樣的。順便說一下,sadd x 1,del x和smembers x也會通過redis-cli和Redis返回「(空列表或設置)」2.6 –

+0

我確認了Didier在Redis 2.2.12上所說的,以防萬一您碰巧擁有Ubuntu 12.04而不使用2.6版。一旦你刪除了最後一項並且將它清空,它將會從命名空間中刪除它。 – Maziyar

相關問題