コアデータWebとモバイル

セッション管理

自動で期限切れになるセッションを保存し、インデックスを作らずにユーザー、ロール、デバイスごとに検索や失効ができます。

ユーザーのセッションを見つけるルックアップ
1
セカンダリインデックス
0
期限切れ(タグも含む)
自動
ステップ 1 / 5
3台のデバイスでサインイン

各デバイスに、有効期限30分の独自のセッションが発行されます。

サンプルセッションplaying
# 3台のデバイスでサインイン
hotkv> SET session:9f2c "{\"user\":42}" EX 1800
OK

実際のHotKVコマンドと応答例を使ったアニメーションのウォークスルーです。任意のステップをクリックすると、そこに移動します。 コマンドと応答は、HotKVで実際に入力し表示されるとおり英語のままです。

課題

セッションは小さく、頻繁にアクセスされ、短命なので、インメモリストアに適しています。難しいのはその後です。サポートがユーザーをすべての場所からサインアウトさせる必要があるときや、セキュリティ担当がロールやデバイスのすべてのセッションを終了させる必要があるときです。単純なキーバリューストアでは、セッションをIDでしか検索できません。

HotKVでの解決方法

HotKVは各セッションを有効期限付きのキーとして保存し、所属するユーザー、ロール、デバイスでタグを付けられます。タグはエンジンの一部でキーとともに消えるため、別のキーのセットを維持しなくても、1回のルックアップで一致するすべてのセッションを一覧にしたり失効させたりできます。

ステップごとに

コマンドごとに何が起きるか

  1. 01

    3台のデバイスでサインイン

    各デバイスに、有効期限30分の独自のセッションが発行されます。

    SET session:9f2c "{\"user\":42}" EX 1800
  2. 02

    各セッションにタグ付け

    セッションの作成直後に、ユーザー、ロール、デバイスが付与されます。

    TAG.SET session:9f2c user:42 role:admin device:ios
  3. 03

    利用中はサインインを維持

    リクエストのたびに有効期限が更新されるため、スライディングタイムアウトになります。

    EXPIRE session:9f2c 1800
  4. 04

    ユーザー42のセッションをすべて検索

    ノートPCの盗難が報告されます。1回のルックアップで、そのユーザーのすべてのセッションが返ります。

    TAG.MEMBERS user:42
  5. 05

    すべての場所からサインアウト

    返ってきたキーを削除します。タグも一緒に消え、すべてのデバイスがサインアウトされます。

    DEL session:9f2c session:71aa session:0c8e
活用シーン

実際のシナリオ

銀行とフィンテックのアプリ

セキュリティチームは、侵害されたアカウントのすべてのセッションや、古いアプリバージョンのすべてのデバイスのセッションを、1回の操作で終了させます。

SaaS製品

管理者のロールが外されると、そのロールのタグが付いたすべてのセッションが一斉に失効します。

ストリーミングサービス

ユーザータグに対するTAG.MEMBERSの応答から、アカウントごとの同時セッションを数えて制限します。

標準搭載

得られるもの

自動の期限切れ

TTLが切れるとセッションは自動で消え、タグも一緒に消えます。

EXEXPIRE

インデックスなしで検索

任意のタグ、または複数のタグの組み合わせでセッションを見つけます。

TAG.MEMBERSTAG.INTER

タグをすばやく確認

TAG.COUNTとTAG.EXISTSで、キーに付いているタグがわかります。

TAG.COUNTTAG.EXISTS

ログインの集中にも高速

セッションの読み取りと書き込みは並列のスレッドで実行されます。

よくある質問

ユーザーを1台のデバイスだけからログアウトさせるには?

ユーザータグとデバイスタグでTAG.INTERを使い、返ってきたキーを削除します。

セッションが期限切れになるとタグはどうなりますか?

キーのタグは、期限切れを含め、キーが消えるときに一緒に消えます。タグはスナップショットに含まれないため、サーバーがスナップショットから再起動した場合は付け直してください。

アカウントごとの同時セッションを制限できますか?

はい。ユーザータグに対するTAG.MEMBERSでセッションを一覧にできるため、サインイン時にそれを数えて、拒否するか最も古いセッションを終了させられます。

関連するユースケース

ご自身のワークロードで試してみましょう

HotKVはRedisプロトコルに対応しているため、既存のクライアントを向けるだけで、これらと同じコマンドを実行できます。