2013-08-06 108 views
0

我使用REDIS存儲表示文檔版本的整數值。在我的代碼,以Redis的唯一電話如下:爲什麼REDIS密鑰持續過期?

def get_document 

    ... 
    version = REDIS.get("version").to_i 
    ... 

end 

def publish_document 

    ... 
    REDIS.incr("version") 
    ... 

end 

的想法是我們每次發佈文件時,它的版本號上升。它必須永遠向上,永不停歇。當我們檢索文檔時,我們會知道我們正在使用哪個版本。

問題是,不時地,版本號會回落到0,這意味着REDIS鍵「版本」以某種方式被刪除(因爲nil.to_i => 0)。但是我的代碼中沒有任何地方刪除「版本」,也沒有發送過期日期。

有誰知道發生了什麼事? REDIS密鑰是否有默認的到期日期?或者REDIS服務器在我不知道的情況下重置?

+0

你是否配置了內存限制和LRU清除或類似的Redis? –

回答

0

Redis鍵沒有默認到期日期。

你確定沒有東西會刪除你的密鑰嗎?

您可以檢查您的Redis服務器是否重新啓動? 您是否在Redis數據集上使用任何形式的持久性?

+0

感謝您的迴應,Matteo。我搜索了整個項目,上面的片段是「版本」鍵的唯一提及。所以它絕對不會被刪除。如果REDIS服務器重新啓動,是否會刪除所有密鑰? – User314159

+0

如果您沒有使用任何持久性,並且服務器重新啓動,那麼您的數據集已經消失。您可以在文檔http://redis.io/topics/persistence上找到關於Redis持久性的更多信息 – matteo