☁️

Rails.cache でキャッシュする

に公開

毎日寒いですね..🥶

さて、Rails には Rails.cache を使って低レベルキャッシュを行う仕組みがあります。
低レベルキャッシュというのは、"抽象化の薄い・自由度の高いキャッシュ" のことだそうです。

使い方

こんなコードで、ブロック部分の処理結果を1時間だけキャッシュすることができます。
キャッシュの key も自分で決めます。

Rails.cache.fetch("key", expires_in: 1.hour) do
  # キャッシュがなければこのブロックが実行されて返される
end

ユースケース

キャッシュの使いどころとしてはこの辺でしょうか。

  • 重い処理
    • API呼び出し、複雑なロジック、外部サービスから値を取得するなど
    • 都度取得するにはコストが掛かる
  • ほとんど変更されないが、たまーに変更されるリスト
    • 変更されたらその値も含めて取得したい

注意点

キャッシュは便利ですが、古いデータを保持し続けると問題になってしまいます。
適切にキャッシュを破棄することが大切です。

「どのタイミングでキャッシュを破棄しないといけないのか」「どのくらいの期間ならキャッシュから返してしまって良いのか」を考えて、用法・用量を守って正しく利用しましょう。

参考:
https://railsguides.jp/caching_with_rails.html#rails-cacheによる低レベルキャッシュ

Discussion