在Rails中使用只读的memoized类变量

时间:2017-03-19 01:24:24

标签: ruby-on-rails multithreading class global-variables memoization

我有一个带有一个名为Nutrients的简单类的rails应用程序。这涉及一个包含约150种营养物品和一些少量信息的表格。在使用应用期间,此数据永远不会更改。由于这些项目经常被使用,并且数据的总大小很小,我真的希望它们在内存中不断维护(以减少不必要的数据库或缓存访问)。

因此我已经考虑使用类存储技术,即:

class Nutrient < ApplicationRecord

  def self.all_cached
    @@all_nutrients ||= Nutrient.all.to_a
  end

end

在直播应用中这样做是否安全?我担心线程安全,并且可能让单独的进程访问同一个数组可能会减慢速度或导致崩溃。 应用程序启动后,此营养素列表永远不会更改或变异。

0 个答案:

没有答案