BackEnd

Railsの低レベルキャッシュを使ってみた

投稿日:2017年9月4日 更新日:

はじめに

こんにちは、tonnyです。
先日、APIにて外部からデータを取得する実装をしておりました。
このとき、同じようなデータを毎回毎回取得しに行くのもよくないと思い、簡易的ではありますが、Railsのキャッシュ機能を使用しました。

今回はそちらを備忘録的にまとめたいと思います。

環境

  • Ruby: 2.4.1
  • Ruby on Rails: 5.1.3

ドキュメント

概要については、こちらをご参照ください。
Railsのキャッシュ機能:概要

また、各メソッドについてはこちらを参照させていただきました。
今回はこの中からいくつかご紹介できれば、と思います。
ActiveSupport::Cache::Store < Object

準備

configの確認

今回はrails consoleにて確認していきます。
ただ、Development環境ではキャッシュ機能がオフになっております。
(正確には、キャッシュを取得しようとするとnullが返るようになっています。)
こちらを修正します。

もしくはtmpcaching-dev.txtというファイルを作成すれば機能します。

Production環境はこの設定はありません。

キャッシュストア

デフォルトはメモリキャッシュになります。
(デフォルト値は32MBになります。)
ファイルキャッシュにすることもできるようです。
キャッシュストア

今回はデフォルトのまま進めます。

使ってみる

#read、#write、#delete

対象のキーを読み込み、書き込み、削除を行うメソッドです。
実際に使用した感じを記載します。

こちらは基本となりますが、次の方が使いやすいのではないでしょうか?

#fetch

対象のキーに値がセットされていなければ、値を書き込み、セットされていれば、その値を読み込みます。

オプション

また、オプションもありますが、よく使うものというとexpires_inかと思います。
これは期限を設定します。
例えば、1時間を期限としたければ、下記のようになります。

#read_multi、#fetch_multi

multiがつくと、複数のキーを配列で読み込むことができます。
また、もし値がセットされていなければ、read_multiであればセットされているキーだけ、fetch_multiであれば値がセットされます。

#exist?

これは予想しやすいと思います。
そのキーが存在するかどうかです。

#clear

キャッシュを全て消すメソッドです。

 

さいごに

簡単ではありますが、まとめてみました。

同じようなデータを取得する、計算する場合などに使用してみてはいかがでしょうか?

blog-page_footer_336




blog-page_footer_336




-BackEnd
-

執筆者:

         

免責事項

このブログは、記事上部に記載のある投稿日時点の一般的な情報を提供するものであり、投資等の勧誘・法的・税務上の助言を提供するものではありません。仮想通貨の投資・損益計算は複雑であり、個々の取引状況や法律の変更によって異なる可能性があります。ブログに記載された情報は参考程度のものであり、特定の状況に基づいた行動の決定には専門家の助言を求めることをお勧めします。当ブログの情報に基づいた行動に関連して生じた損失やリスクについて、筆者は責任を負いかねます。最新の法律や税務情報を確認し、必要に応じて専門家に相談することをお勧めします。


    • 原弘 より:

      ご指摘ありがとうございます。
      ご指摘のとおり、expires_in: が正しいものになります。
      本文も修正させていただきました!

原弘 へ返信する コメントをキャンセル

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

CAPTCHA


関連記事

rails

関連するモデルのレコードを一緒に作成する方法

1 はじめに1.1 前提条件2 実装2.1 モデルの作成2.2 コントローラの作成2.3 Viewの作成3 さいごに はじめに フォームからレコードを作成する際に、関連するモデルのレコードを一緒に作成 ...

rails

Rails 6の変更点と新機能

1 はじめに2 概要3 Rubyのサポートバージョン4 Webpacker4.1 Webpackerの設定4.2 Webpackerでのビルド4.3 ビルドしたJavaScriptファイルを読み込む4 ...

rails

Rails Developer Meetup に参加してきました【1日目】

1 はじめに2 発表について2.1 安全かつ高速に進めるマイクロサービス化2.2 Rails in Microservices2.3 MySQL/InnoDB の裏側2.4 H2O/mruby でつく ...

Go言語

go:embedとGo 1.16、1.17での変更点まとめ

1 はじめに1.1 変更点一覧2 go:embedとは3 go:embedの使い方3.1 基本的な使い方3.2 複数のファイルを埋め込む3.3 異なるディレクトリのファイルを埋め込む3.4 ディレクト ...

rails

【Puma】アプリサーバのチューニング

1 はじめに2 チューニングで注意する項目3 子プロセスの数3.1 最低3つの子プロセスを割り当てる3.2 最大子プロセス数3.3 CPUコア数と子プロセス数3.4 なぜPumaの子プロセス数を増やす ...

フォロー

follow us in feedly

blog-page_side_responsive

2017年9月
 12
3456789
10111213141516
17181920212223
24252627282930

アプリ情報

私たちは無料アプリもリリースしています、ぜひご覧ください。 下記のアイコンから無料でダウンロードできます。