グーグルをしてみましたが、この質問に対する答えが見つかりませんでした。 Railsは、次のようにキャッシュの有効期限を指定できます。
Rails.cache.fetch("my_var", :expires_in => 10.seconds)
しかし、何も指定しないとどうなりますか。
Rails.cache.fetch("my_var")
期限切れになることはありませんか?デフォルト値はありますか?期限切れにならないものを明示的に定義するにはどうすればよいですか?
実際には、使用しているキャッシュストレージによって異なります。 Railsはいくつかを提供し、そのうちの1つは Memcached です。Memcachedの重要な機能の1つは、 古い未使用のレコードを自動的に期限切れにする 、 :expireオプションを忘れることができます。
その他のRailsメモリストレージやredisストレージなどのキャッシュストレージは、いつ有効にするかを明示的に指定しない限り、有効期限が切れません。
@Rahulが言うように、Dalliをmemcached(そうでない場合)に使用すると、デフォルトの有効期限は決してありません。 @icemが言うように、ガベージコレクションについて心配する必要はありません。memcachedは古い未使用のレコードを破棄します。
公式のdalliのドキュメントを参照してください。
Expires_in default is 0, which means never
https://github.com/mperham/dalli#configuration
dalliのグローバル有効期限を設定できます
config.cache_store = :dalli_store, { expires_in: 1.day}
そしてより良い個人管理のために:
Rails.cache.write "some_cache_key", some_cachable_string, expires_in: 3.hours
新しいドキュメント http://apidock.com/Rails/ActiveSupport/Cache/Store/write はあまり言いませんが、古いドキュメントはそうです: http://apidock.com/ Rails/ActiveSupport/Cache/MemCacheStore/write
キャッシュを手動で期限切れにします(何らかのイベントが発生した場合):
Rails.cache.delete "some_cache_key"
それらは決して切れません。 (RailsのデフォルトであるFileStoreベースのキャッシュの場合)
それらのキーがキャッシュストアで見つかった場合、その値が使用されます。したがって、少なくとも有効期限を追加することを常にお勧めします。