dalli gemを使用したRailsキャッシング

Dalli は、memcached サーバーにアクセスするための高性能の純粋な Ruby クライアントです。新しいバイナリ プロトコルを使用するため、memcached 1.4 以降でのみ動作します。

メムキャッシュ
Memcached は、あまり多くの変更を加えることなく、Rails をはるかに高速に実行できる、迅速なメモリ内抗議予約フレームワークです。
Memcached は、データベース呼び出し、API 呼び出し、またはページ レンダリングの結果から得られる小さな任意の情報 (文字列、オブジェクト) を格納するメモリ内のキー/値ストアです。

以下のコマンドを実行して memcached をインストールします
Ubuntu の場合

sudo apt-get install memcached

Macの場合

醸造インストールmemcached

memcahed のインストールについて詳しくは、以下の URL を参照してください。
https://github.com/petergoldstein/dalli#installation-and-usage

dalli gemをインストールする

宝石「ダリ」

上記の gem を gemfile に追加し、bundle install を実行します。

構成
ここでは、キャッシュ機構を提供するように Rails アプリを構成する必要があります。以下の行をproduction.rb(config/environments/production.rb)に追加します。

config.cache_store = :dalli_store

Dalli::Client は次のオプションを受け入れます。時間はすべて秒単位です。
有効期限: キー TTL のグローバルデフォルト。デフォルトは 0 で、有効期限がないことを意味します。
名前空間: デフォルトでは nil です。名前空間を指定すると、各キーの先頭に追加されます。
フェイルオーバー: デフォルトは true です。ブール値。true の場合、キーのメイン サーバーがダウンした場合、Dalli は別の動作中のサーバーにフェイルオーバーします。
スレッドセーフ: ブール値。 true の場合、Dalli は、指定された時点で 1 つのスレッドだけがソケットを使用していることを保証します。デフォルトは true です。
シリアライザ: 保存されるオブジェクト (例: JSON) に使用するシリアライザー。デフォルトはマーシャルです。
compress: ブール値、true の場合、Dalli は 1K を超える値を gzip 圧縮します。デフォルトは false です。
圧縮最小サイズ: 圧縮を試みる最小値のバイト サイズ。デフォルトは 1K です。
圧縮最大サイズ: 圧縮を試みる最大値のバイト サイズ。デフォルトは無制限です。
詳細な構成については、次の URL で確認してください。
https://github.com/petergoldstein/dalli#configuration
この後、ActionController にキャッシュを実行するように指示する必要があります。同じファイルに以下の行を追加し、Rails サーバーを既に実行している場合は再起動します。

config.action_controller.perform_caching = true


以下のコードをインデックスメソッドに追加してください

@posts = Rails.cache.fetch('posts',expires_in: 5. minutes){ Post.all }



ここ、 Rails.catch.fetch 「posts」キーからデータを読み取ります。指定されたキーにデータがある場合はデータが返され、そうでない場合はそのキーに書き込まれ、有効期限内の連続した呼び出しで使用できるようになります。

Rails には、キャッシュを読み取るための Rails.cache.read、キャッシュに書き込むための Rails.cache.write、キャッシュ内に存在する場合は結果を返す Rails.cache.fetch などのヘルパーが用意されています。キャッシュ内に存在する場合はキャッシュに書き込んで結果を返します。結果。

Rails キャッシュの詳細については、次の URL を参照してください。
https://api.rubyonrails.org/classes/ActiveSupport/Cache/Store.html

Rails.cache.clear() – memcached からすべてのキーをフラッシュします。
Rails.cache.delete('posts') – memcached サーバーから特定のキーをフラッシュしたい場合。

関連記事

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

jaJapanese