0

割り当てられたメモリ バッファがいっぱいになった場合に memcache がどのように機能するかを理解しようとしています。特に、キャッシュ内のキーと値のペアのライフサイクルを理解したいと考えています。キーと値のペアを直接作成しているレールでの低レベルのキャッシュ操作について話しています。たとえば、次のようなコマンド

Rails.cache.write key, cached_data

Rails.cache.fetch key 

議論のために、ランダムな UUID をキーとして生成し、ランダムなデータを格納するだけの無限ループがあると仮定します。キャッシュがいっぱいになるとどうなりますか? 古いアイテムはただぶつけられるだけですか、それともこの不測の事態を処理する特定のアルゴリズムが舞台裏にあるのでしょうか? 他の場所で「キャッシュの無効化は難しい問題です」を読みました。

それが実際にどのように機能するかを理解しようとしているだけです。

キャッシュされたデータを作成および破棄する最良の方法を示す簡単なコード例はありますか? エントリの有効期限を明示的に定義する必要がありますか?

4

1 に答える 1

1

MemcacheD はこれを舞台裏で処理します。この質問をチェックしてください -

Memcache と期限切れのアイテム

有効期限パラメーターを定義できます。この wiki ページをチェックしてください -

http://code.google.com/p/memcached/wiki/NewProgramming#Cache_Invalidation

アプリケーション ロジックに固有のキャッシュ無効化 (バックグラウンドでのメモリの枯渇だけでなく) の場合、削除関数は単純にデータを削除します。アプリでキャッシュされたデータをいつ削除するかについては、言うのが難しいため、キャッシュの無効化について言及した引用は難しい. データベースが変更されるたびにキャッシュされたデータを簡単に無効にできるように、 after_commit - http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.htmlのような ActiveRecord コールバックについて考えることから始めることをお勧めします。

しかし、これは単なる提案であり、さまざまなキャッシュ無効化スキームが存在します。

于 2012-11-02T15:25:58.190 に答える