2013-08-06 85 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