MemoryStore 中的 max_prune_time 是什么?

What is max_prune_time in MemoryStore?

MemoryStore的初始化方法中,max_prune_time可以作为一个选项传递。

它的目的是什么?

此外, @max_prune_time = options[:max_prune_time] || 2

默认单位是什么?秒?

max_prune_time 是 Rails 释放内存的最长时间(以秒为单位),如果缓存存储耗尽内存,则通过删除旧条目来释放内存。具体见prune方法的实现:

def prune(target_size, max_time = nil)
  # ...
  start_time = Time.now
  cleanup
  instrument(:prune, target_size, :from => @cache_size) do
    keys = synchronize{ @key_access.keys.sort{|a,b| @key_access[a].to_f <=> @key_access[b].to_f} }
    keys.each do |key|
      delete_entry(key, options)
      return if @cache_size <= target_size || (max_time && Time.now - start_time > max_time)
    end
  end
  # ...
end