class ActiveSupport::Cache::MemoryStore

def prune(target_size, max_time = nil)

recently accessed entries.
To ensure entries fit within the specified memory prune the cache by removing the least
def prune(target_size, max_time = nil)
  return if pruning?
  @pruning = true
  begin
    start_time = Process.clock_gettime(Process::CLOCK_MONOTONIC)
    cleanup
    instrument(:prune, target_size, from: @cache_size) do
      keys = synchronize { @data.keys }
      keys.each do |key|
        delete_entry(key, **options)
        return if @cache_size <= target_size || (max_time && Process.clock_gettime(Process::CLOCK_MONOTONIC) - start_time > max_time)
      end
    end
  ensure
    @pruning = false
  end
end