【簡単3分】Rails ConsoleでRedisにセッションデータを確認する具体例を紹介‼️🍜
はじめに
こんにちは、Takeです。都内の自社開発企業でエンジニアとして働いています。
こちらの記事では、動作確認の目的でRails Consoleを使用してRedisにセッションを保存し、そのデータを取得して確認する一連の流れを紹介します。
Redis
とは何ぞや?という方向け👇
そもそも最低2分半でキャッチアップできる動画を厳選していますので、よろしければご覧ください。
結論
[1] pry(main)> redis = Redis.new(url: ENV['REDIS_URL'])
[2] pry(main)> session_id = SecureRandom.hex(16)
[3] pry(main)> session_data = { user_id: 1, created_at: Time.now }
[4] pry(main)> redis.set("session:#{session_id}", Marshal.dump(session_data))
[5] pry(main)> puts "Session ID: #{session_id} stored with data: #{session_data}"
[6] pry(main)> session_keys = redis.keys("session:*")
[7] pry(main)> session_keys.each do |key|
[7] pry(main)* session_data = Marshal.load(redis.get(key))
[7] pry(main)* puts "Key: #{key}, Data: #{session_data}"
[7] pry(main)* end
解説
1. Redisへの接続
まず、Redisサーバーに接続します。Redis.new
を使用して環境変数REDIS_URL
からURLを取得し、接続を確立します。以下のコードをRails Console
で実行します。
redis = Redis.new(url: ENV['REDIS_URL'])
これにより、指定されたRedisサーバーに接続できてクライアントオブジェクトが返されます。
環境変数`REDIS_URL`はこちらのファイルがソースとなっています。
Rails.application.configure do
config.session_store :redis_store, servers: ENV['REDIS_URL'], ...
end
2. セッションIDの生成
セッションIDはセッションデータの識別子として重要です。SecureRandom.hex(16)
で16バイトのランダムな16進数を生成してセッションIDとします。
session_id = SecureRandom.hex(16)
3. セッションデータの作成
セッションデータをハッシュで作成します。以下の例では、user_id
とcreated_at
(セッション作成時間)を含んでいます。
session_data = { user_id: 1, created_at: Time.now }
4. Redisへのセッションデータの保存
redis.set
を使用して、セッションIDをキーとしてデータを保存します。
Marshal.dump
を用いてデータをシリアライズし、Redisに保存します。
redis.set("session:#{session_id}", Marshal.dump(session_data))
5. セッションIDとデータの確認
保存したセッションIDとそのデータを確認します。以下のコードでセッションIDとデータを表示します。
puts "Session ID: #{session_id} stored with data: #{session_data}"
6. Redis内のセッションキーを取得
Redisに保存されたすべてのセッションキーを取得します。session:*
でセッションIDを持つすべてのキーを検索します。
session_keys = redis.keys("session:*")
7. セッションデータの取得と表示
最後に、取得したセッションキーに基づいてデータを取り出し、元のRubyオブジェクトに戻して表示します。
session_keys.each do |key|
session_data = Marshal.load(redis.get(key))
puts "Key: #{key}, Data: #{session_data}"
end
参考記事
redis.new
やredis.set
の構文について
session生成時:
SecureRandom.hex(16)
Marshal.dump
について:
sessionについて:
Redisのキャッチアップに用いたリソース
まとめ
この手順では、Rails Consoleを使用してRedisにセッションデータを保存し、そのデータを後から取得して確認する方法を示しました。Redisは高速なセッション管理が可能で特にスケーラブルなWebアプリケーションで効果的です。
最後に
ここまで読んでいただきありがとうございました!
今回の記事が良かったと思ったらぜひ「いいね」を押していただけると嬉しいです 🎉
noteでも記事を執筆していますので、ぜひチェックしてみてください。
他にもこのようなことについて記載しているのでお読みいただければ幸いです。
最後までお読みいただき、誠にありがとうございました!
Discussion