新しくリリースされた Spring Session コンポーネントで PoC を行っています。これは、セッションとセッションに保存されたオブジェクト/データの両方が保持される Redis リポジトリによってバックアップされます。
- アプリケーションでセッションが作成されました
- Redis CLI で「Keys *」コマンドを実行し、新しいエントリを確認しました (「spring:session:sessions:6b55103a-baf5-4a05-a127-3a9cfa15c164」など)。
- アプリケーションから、カスタム Bean をセッションに追加しました
- Redis CLI で "Keys *" コマンドを実行し、この Bean の新しいエントリをもう 1 つ確認しました ("\xac\xed\x00\x05t\x00\tcustomer1" のように、Bean には値が 'customer1' の文字列があったため)
- 30 秒の自動有効期限を設定し、その間アプリケーションを使用せずに残しました
- sessionDestroyEvent がトリガーされ、ApplicationListener を実装するリスナーでキャプチャされました
- Redis CLI で「Keys *」コマンドを実行すると、セッションの最初に作成されたエントリがなくなりましたが、カスタム Bean オブジェクト (customer1) はまだ Redis に残っていました
質問:
Redis Store をクリーンアップするのはユーザーの責任ですか? セッションに多くのデータ要素が保存されている場合、セッションの破棄 (ログアウトおよびタイムアウト イベント) 中に redis ストアから手動でそれらをクリーンアップする必要があります。
更新:
この質問を投稿して (おそらく 3/4 分後) Redis-CLI に戻ってキーを一覧表示しましたが、Customer1 オブジェクトが見つかりません。つまり、ガベージ コレクションのように、Redis によって一定の間隔でクリーンアップが実行されるということですか?