Ruby on Railsで特定の値やクエリ結果をキャッシュするしくみとしてRails.cache
を紹介します。
この機能を使うとや有効期限を設定したり、キャッシュ内容を圧縮できます
🏈 メソッド
Rails.cache.fetch
Rails.cache.fetch
はキャッシュされた値を取得するメソッドです。
ブロックを渡すことで、キャッシュがなかった場合は指定されたデータをキャッシュにセットして返すことができます。
def cached_title |
オプション | 説明 |
---|---|
expired_in |
キャッシュの有効期限を設定します |
force |
force: true なら強制的に値をキャッシュします |
compress |
データを圧縮してキャッシュします |
Rails.cache.fetch_multi
Rails.cache.fetch_multi
はキャッシュから複数のキーの値を取得するメソッドです。
特にmemcachedやRedisをネットワーク経由でキャッシュ先に使う場合は、一度に複数のデータを取得することが推奨されます。
Rails.cache.write('hoge', 'fuga') |
Rails.cache.write
Rails.cache.write
はキャッシュへの書き込みを行うメソッドです。
Rails.cache.write('city', 'Sapporo') |
Rails.cache.exist?
Rails.cache.exist?
はキャッシュの存在確認をするメソッドです。
Rails.cache.write('city', 'Sapporo') |
Rails.cache.delete
Rails.cache.delete
は指定したキーのキャッシュの削除を行うメソッドです。
Rails.cache.write('city', 'Sapporo') |
Rails.cache.clear
Rails.cache.delete
はすべてのキャッシュの削除を行うメソッドです。
Rails.cache.write('city', 'Sapporo') |
🎂 キャッシュ先の設定
キャッシュのストア先の設定はconfig/environments/xxx.rb
に環境毎に設定します。
メモリキャッシュ
:memory_store
でRubyプロセス内のメモリに保持されます。size
でキャッシュのサイズを指定します。
(32MBがデフォルト)
config.cache_store = :memory_store, { size: 64.megabytes } |
ファイルキャッシュ
:file_store
でファイルシステムにキャッシュを保存します。キャッシュの保存先のパスを指定する必要があります。
config.cache_store = :file_store, '/path/to/cache/directory' |
memcachedへのキャッシュ
Rails本体にバンドルされたgem「dalli」を使って
memcachedにキャッシュを行うことができます。初期化時にクラスタ内のすべてのmemcachedサーバのアドレスを指定する必要があります。
config.cache_store = :mem_cache_store, cache-1.example.com, cache-2.example.com |
アドレスの指定がない場合はローカルのデフォルトポートで動作しているとみなします。