【Rails+Redis】セッション管理をredisに任せる
現在作成してるrailsポートフォリオで、せっかくだからセッション管理はredisに任せようと思い、色々いじったので共有したいと思います。
環境
- macOS
- Docker
- RubyonRails
- Redis
- MySQL
前提
- Redisはすでにインストール済み
- DockerにもRedisは追加済み
セッション管理をRedisに任せる理由
- Redisはすでにインストール済み
- DockerにもRedisは追加済み
セッション管理をRedisに任せる理由
RedisはRDBとは違って、
- KVS
- データをメモリに保つので動作が高速
という特徴があります。
この特徴からセッション管理に向いてるとして結構使われることが多いみたいです。
さっそく実装してみる
ではさっそく実装しましょう。
gemの追加
Gemfileに以下を追加してインストールしてください。
# Use Redis adapter to run Action Cable in production
gem 'redis', '~> 4.0'
gem 'redis-rails'
config/initializers/session_store.rbの設定
初期設定はコメントアウトしておきましょう。
最初からない人は問題ないです。
#Rails.application.config.session_store :cookie_store, key: 'XXXXXX'
config/environments/development.rbの設定
config/environments/development.rbに以下を追加。
config.session_store :redis_store, servers: 'redis://redis:6379/0', expire_in: 1.day
これで一日セッションが保たれる設定になってるはずです。
確認
以下のコマンドでデータが入ってるか確認しましょう。
docker exec -it コンテナID redis-cli
127.0.0.1:6379> keys *
1) "2::63c3d325054ad936b6408b30ba8c4e1395cce110d77c3e5171c7e22840d75a9d"
2) "2::383c6dfd3c95d07631fc8e879911fef09760a789461d8b7d0736a32d7d8ee656"
keys * で出てきたkeyを使って中身を確認。
127.0.0.1:6379> get "2::63c3d325054ad936b6408b30ba8c4e1395cce110d77c3e5171c7e22840d75a9
d"
何か長い謎の文字列が出てきたら情報がしっかり入ってることになっていると思います。
試しにredisのデータを全部削除したら、アプリがログイン画面に戻りましたので、成功と見て問題ないでしょう。
まとめ
以前Redisを利用した時はランキング機能の実装だったので、また違った角度でRedisを扱えたことは勉強になりました。
ぶっちゃけ、まだRedisの知識がちゃんと身に付いてるとは言い難いですが、これからも色々利用しながら学んでいきたいと思います。
ではでは。
Author And Source
この問題について(【Rails+Redis】セッション管理をredisに任せる), 我々は、より多くの情報をここで見つけました https://qiita.com/soehina/items/018e11624206debab527著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .