プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • データベース
  • 【Ruby on Rails】「Redis」の基本、Railsへの導入
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Ruby on Rails】「Redis」の基本、Railsへの導入

11.02

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

Redisとは?

  • 「REmote DIctionary Server」の略
  • Key-Value型のNoSQLデータベース
  • クライアントサーバモデル を採用した インメモリデータベース
  • 様々なデータ構造(list、hash、string、set等)をサポートする。
  • 同様の用途のミドルウェアに「Memcached」があります。

インメモリデータベースとは?

全てのデータをPCのメインメモリ上に展開して動作します。(MySQL等のRDBMSはディスク型データベース)

特徴

1プロセス、1スレッドで動く

全ての動作がシングルスレッドでMySQLのように並列処理はできません。なので、必然的に全てのデータ操作は排他になります。

データの永続化も可能。

パフォーマンスに影響が出るので全てのデータを永続化することはおすすめできないですが、使い所に応じてやると良いでしょう。

RDBMSに保存

save コマンド (または設定ファイル) でスナップショットをRDBMSのディスクに保存することで可能

AOF(Append Only File)に保存

実行時の全コマンドを保存することが可能です。

メリット

パフォーマンス向上を期待できる。

全てメインメモリ上にデータがあるのでアプリケーションから高速なアクセスが可能になります。

主な用途

  • アプリケーションのセッションや、キャッシュ等の一時的な保存先として指定する用途で主に使われます。
  • 商品データをリスト化しておきリアルタイムに更新するというようなリアルタイム処理でも使います。
  • トランザクションが必要な課金系なデータはRDBMSに保存し、処理の結果はRedisに保存しておくと言う構成が多い。
  • 出版/購買モデルにおけるメッセージブローカ的な役割

デメリット

常にメモリを消費し、メモリに乗るデータしか扱えない。

メモリに乗り切るデータしか扱えない。なので、クラッシュセーフではない。

データが消える。(永続データは保持するのが苦手)

数分でデータが消えてしまいます。データの消失が絶対に許されないシステムでは採用はできません。

Railsへの導入

Gemfileに下記を追加して「bundle install」を実行します。

1
2
gem 'redis-actionpack'
gem 'hiredis'

設定

「config/initializers/session_store.rb」に対して下記のような設定をします。driverに「hiredis」を使うことでより高速に接続することができます。(C言語で記述されているため。)

1
2
3
4
Rails.application.config.session_store :redis_store, expire_in: 43200, servers: {
  url: AWSの「ElastiCache」のURL,
  driver: hiredis
}

URL

AWSのElastiCacheで作成したRedisサーバのURLを指定します。

スポンサーリンク
  • 2020 11.02
  • miyabisan2
  • コメントを書く
  • Ruby on Rails, データベース
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2020 12.19

    【Ruby on Rails】「外部キー」の設定のされ方

  2. 2019 11.23

    【Ruby on Rails】アプリケーションサーバ「Puma」、「Unicorn」について

  3. 2019 12.30

    【Ruby on Rails】「Model Spec(モデルスペック)」の基本

  4. 2019 12.03

    【Ruby on Rails】アセットパイプラインについて

  5. 2018 06.20

    【Ruby on Rails】アセット(CSS,JavaScript)やマニフェストファイルの仕組み(Sprockets、Webpacker)

  6. 2022 09.04

    【Rails】「ロードパス」、「Zeitwerk」について

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Docker】基本、「マウント(Volumes、bi…

【nginx】基本、変数(ビルドイン変数)

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー