rails6 redisにセッションを保存する

rails6 redisにセッションを保存する

rails6でredisにセッションを保存するまでの手順を記述してます。redisのバージョンは6.0.10を使用してます。

環境

  • OS CentOS Linux release 7.9.2009 (Core)
  • Ruby 2.7.2
  • Rails 6.1.1
  • redis 6.0.10
  • rbenv 1.1.2-40-g62d7798

redis-railsインストール

まずは、railsでredisを使用できるように「redis-rails」をインストールします。

「Gemfile」に以下を追加します。

gem "redis-rails"

インストールします。

bundle install

redis利用

「config」ディレクトリ配下にある「application.rb」に以下を追加します。

セッションが消えるかどうかのテストのため10秒に設定

module RailsTest
  class Application < Rails::Application
    config.load_defaults 6.1
    # 追加
    config.cache_store = :redis_store, "redis://localhost:6379/0/cache", { expires_in: 10.seconds }
  end
end

「config/initializers」に「redis.rb」を作成します。

Redis.current = Redis.new

次に「config/initializers」に「session_store.rb」を作成します。

Rails.application.config.session_store :redis_store, {
  servers: [
    {
      host: "localhost",  # サーバー名
      port: 6379,         # ポート
      db: 0,              # データベースの番号
      namespace: "session",  # 名前
    },
  ],
}

これでサーバーを起動すればセッションが保存されるようになります。

rails s

確認

ブラウザから http://プライベートIP or サーバーアドレス:3000 にアクセスするとsessionがredisに作成されることが確認できます。

redis-cli

127.0.0.1:6379> key *
"session:2::447af70e0f3b23b1d4afc9e00cb80796f758462abfcb12af61df1f65dae248ab"

10秒後に再度実行するとsessionが消えていることが確認できます。

127.0.0.1:6379> key *
(empty array)