Rails memcache存储默认的自动过期时间

时间:2013-03-20 05:36:07

标签: ruby-on-rails memcached dalli

我一直在苦苦寻找Rails设置的默认过期时间,以防我们在向memcache存储键值对时不提供任何内容? 例如Rails.cache.write('some-key','some-value')

如果我们没有指定,rails会默认设置一些到期时间吗?

2 个答案:

答案 0 :(得分:5)

如果你使用Rails提供的默认内置MemCacheStore类,那么没有。创建新的缓存条目时,它不会假定到期时间。您可以read the applicable code进行验证。它会检查您是否已将expires_in选项传递给#write方法,如

Rails.cache.write("key", "content", expires_in: 2.hours)

如果还没有,只需将0传递给memcache,表示没有到期时间。希望这有帮助!

答案 1 :(得分:5)

如果您正在使用更新的(我认为更好)Dalli memcached gem,您可以使用如下所示的行在适配器级别配置它:

config.cache_store = :dalli_store, 'cache-1.example.com', 'cache-2.example.com',
  { :namespace => NAME_OF_RAILS_APP, :expires_in => 1.day}

有关:expires_in选项的详细说明,请参阅README。总的来说,我认为Dalli不仅仅是检查这个功能,它还更快,并支持一些较新的身份验证功能等。