Rails缓存的默认到期时间是多少?

我做了一些谷歌搜索,无法找到这个问题的答案。 Rails允许指定其缓存的到期时间,如下所示:

Rails.cache.fetch("my_var", :expires_in => 10.seconds) 

但如果我什么都没说,会发生什么:

 Rails.cache.fetch("my_var") 

它永不过期? 有默认值吗? 我如何明确定义永不过期的东西?

这实际上取决于您正在使用的缓存存储。 Rails提供了几种,其中最受欢迎的是Memcached 。 Memcached的一个关键function是它会自动使旧的未使用记录过期 ,因此您可以忘记:expire选项。

除非您明确指定何时执行此操作,否则其他Rails缓存存储(如内存存储或redis存储)将保持不会过期。

有关缓存密钥到期如何在Rails中工作的更多信息。

使用Dalli进行memcached(谁没有),默认的到期时间永远不会像@Rahul所说的那样。 你不必担心垃圾收集,正如@icem所说,memcached扔掉了旧的未使用的记录。

查看官方dalli文档:

 Expires_in default is 0, which means never 

https://github.com/mperham/dalli#configuration

您可以设置dalli的全局到期时间

 config.cache_store = :dalli_store, { expires_in: 1.day} 

并为了更好的个人控制:

 Rails.cache.write "some_cache_key", some_cachable_string, expires_in: 3.hours 

新的文档http://apidock.com/rails/ActiveSupport/Cache/Store/write并没有多说,但旧的做法: http : //apidock.com/rails/ActiveSupport/Cache/MemCacheStore/write

手动使缓存失效(如果发生某些事件):

 Rails.cache.delete "some_cache_key" 

它们永不过期。 (对于基于FileStore的缓存,这是Rails中的默认值)

如果在缓存存储中找到它们的密钥,则将使用该值。 因此,始终建议至少添加任何到期时间。