私はいくつかのグーグルを行ったが、この質問に対する答えを見つけることができなかった. Rails では、キャッシュの有効期限を次のように指定できます。
Rails.cache.fetch("my_var", :expires_in => 10.seconds)
しかし、何も指定しないとどうなりますか:
Rails.cache.fetch("my_var")
有効期限はありませんか?デフォルト値はありますか? 期限切れにならないものを明示的に定義するにはどうすればよいですか?
私はいくつかのグーグルを行ったが、この質問に対する答えを見つけることができなかった. Rails では、キャッシュの有効期限を次のように指定できます。
Rails.cache.fetch("my_var", :expires_in => 10.seconds)
しかし、何も指定しないとどうなりますか:
Rails.cache.fetch("my_var")
有効期限はありませんか?デフォルト値はありますか? 期限切れにならないものを明示的に定義するにはどうすればよいですか?
@Rahul が言うように、memcached に Dalli を使用すると (誰が使用しないか)、デフォルトの有効期限は決してありません。@icem が言うように、ガベージ コレクションについて心配する必要はありません。memcached は古い未使用のレコードを破棄します。
ダリの公式ドキュメントを参照してください。
Expires_in default is 0, which means never
https://github.com/mperham/dalli#configuration
ダリのグローバル有効期限を設定できます
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 ベースのキャッシュの場合)
それらのキーがキャッシュストアで見つかった場合、その値が使用されます。したがって、少なくとも有効期限を追加することを常にお勧めします。