我有一個函式,它回傳一個 ID 串列,在Rails 快取指南中我可以看到可以在快取結果上設定過期,但我的快取實作方式有所不同。
def provide_book_ids(search_param)
@returned_ids ||= begin
search = client.search(query: search_param, :reload => true)
search.fetch
search.options[:query] = search_str
search.fetch(true)
search.map(&:id)
end
end
如上所述,設定 10 分鐘快取到期的推薦方法是什么?
uj5u.com熱心網友回復:
def provide_book_ids(search_param)
@returned_ids = Rails.cache.fetch("zendesk_ids", expires_in: 10.minutes) do
search = client.search(query: search_param, :reload => true)
search.fetch
search.options[:query] = search_str
search.fetch(true)
search.map(&:id)
end
end
我假設這段代碼是某個請求-回應周期的一部分,而不是其他東西(例如,長時間運行的作業人員或在您的應用程式中初始化一次的某個類。在這種情況下,您不想直接使用 @returned_ids 但是而是呼叫 provide_book_ids 來獲取值,但據我了解,這不是您的情況,因此上面提供的方法應該可以作業。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/490086.html
上一篇:Docker上的Rails:ActiveRecord::ConnectionNotEstablished:無法將主機名轉換為地址:再試一次
下一篇:JSON::ParserErrorin...“../../test.json”處的意外令牌-RUBYONRAILS
