我有一个带有一个名为Nutrients的简单类的rails应用程序。这涉及一个包含约150种营养物品和一些少量信息的表格。在使用应用期间,此数据永远不会更改。由于这些项目经常被使用,并且数据的总大小很小,我真的希望它们在内存中不断维护(以减少不必要的数据库或缓存访问)。
因此我已经考虑使用类存储技术,即:
class Nutrient < ApplicationRecord
def self.all_cached
@@all_nutrients ||= Nutrient.all.to_a
end
end
在直播应用中这样做是否安全?我担心线程安全,并且可能让单独的进程访问同一个数组可能会减慢速度或导致崩溃。 应用程序启动后,此营养素列表永远不会更改或变异。