23

私はいくつかのグーグルを行ったが、この質問に対する答えを見つけることができなかった. Rails では、キャッシュの有効期限を次のように指定できます。

Rails.cache.fetch("my_var", :expires_in => 10.seconds)

しかし、何も指定しないとどうなりますか:

Rails.cache.fetch("my_var")

有効期限はありませんか?デフォルト値はありますか? 期限切れにならないものを明示的に定義するにはどうすればよいですか?

4

3 に答える 3

10

@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"
于 2013-12-16T11:21:55.170 に答える
6

期限切れになることはありません。(Rails のデフォルトである FileStore ベースのキャッシュの場合)

それらのキーがキャッシュストアで見つかった場合、その値が使用されます。したがって、少なくとも有効期限を追加することを常にお勧めします。

于 2013-01-18T17:55:30.043 に答える