我有一個緩存的對象,需要相當一段時間來計算(~30秒)。我每24小時重新計算一次這個對象,如果發生這種情況,有時用戶會遇到暫停,如果它們恰好在同一時間在這裏。我緩存的對象目前的工作原理是這樣的:
def matrix
Rails.cache.fetch(["matrix"], expires_in: 24.hours) do
# Math
end
end
我想要做的是附加一個版本。這樣我可以計算與不同方法的背景一個新的「矩陣」 ......
def rewrite_matrix
new_version = DateTime.now.to_s
Rails.cache.fetch(["matrix", new_version], expires_in: 24.hours) do
# Math
end
$matrix_version = new_version # This feels like a faux pas.
end
,然後改變我的陣法像...
def matrix
$matrix_version ||= DateTime.now.to_s
Rails.cache.fetch(["matrix", $matrix_version], expires_in: 24.hours) do
# Math
end
end
我一直閱讀Ruby/Rails中的全局變量,並且所有內容都表示不應該被觸及?這個$ matrix_version變量是否可用於其他進程和其他用戶?無論如何,我希望知道如何解決方法或在後臺創建新的緩存版本,然後在完成計算和存儲時纔開始使用它。