☁️
Rails.cache でキャッシュする
毎日寒いですね..🥶
さて、Rails には Rails.cache を使って低レベルキャッシュを行う仕組みがあります。
低レベルキャッシュというのは、"抽象化の薄い・自由度の高いキャッシュ" のことだそうです。
使い方
こんなコードで、ブロック部分の処理結果を1時間だけキャッシュすることができます。
キャッシュの key も自分で決めます。
Rails.cache.fetch("key", expires_in: 1.hour) do
# キャッシュがなければこのブロックが実行されて返される
end
ユースケース
キャッシュの使いどころとしてはこの辺でしょうか。
- 重い処理
- API呼び出し、複雑なロジック、外部サービスから値を取得するなど
- 都度取得するにはコストが掛かる
- ほとんど変更されないが、たまーに変更されるリスト
- 変更されたらその値も含めて取得したい
注意点
キャッシュは便利ですが、古いデータを保持し続けると問題になってしまいます。
適切にキャッシュを破棄することが大切です。
「どのタイミングでキャッシュを破棄しないといけないのか」「どのくらいの期間ならキャッシュから返してしまって良いのか」を考えて、用法・用量を守って正しく利用しましょう。
参考:
Discussion