Ruby on Railsで特定の値やクエリ結果をキャッシュするしくみとしてRails.cacheを紹介します。
この機能を使うとや有効期限を設定したり、キャッシュ内容を圧縮できます
🏈メソッド
Rails.cache.fetch
Rails.cache.fetchはキャッシュされた値を取得するメソッドです。
ブロックを渡すことで、キャッシュがなかった場合は指定されたデータをキャッシュにセットして返すことができます。
defcached_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 |
アドレスの指定がない場合はローカルのデフォルトポートで動作しているとみなします。


