マルチセッション対応 - Redis サーバのインストール

最終更新日: 2021年3月8日
R8 | R9

Linux OS へのインストール

Linux OS での redis のインストールと実行を次の手順で行うことができます。

$ yum search redis
....
redis.x86_64 : A persistent key-value database
$ sudo yum install redis
...
(1/2): jemalloc-3.6.0-1.el6.x86_64.rpm                   | 100 kB     00:00
(2/2): redis-3.2.11-1.el6.x86_64.rpm                     | 521 kB     00:00
...
$ chkconfig --list redis
redis           0:off   1:off   2:off   3:off   4:off   5:off   6:off
$ sudo chkconfig redis on
$ chkconfig --list redis
redis           0:off   1:off   2:on    3:on    4:on    5:on    6:off
$ sudo service redis start
redis-server を起動中:                                     [  OK  ]

インストール後、redis の内容を消去します。

$ redis-cli flushall
OK

データベースをクリアする (1) 自動消去

Wagby アプリケーションを再起動するタイミングで、redis の内容は自動的に消去されます。

データベースをクリアする (2) 手動消去

何らかの理由で redis の内容を消去したい場合は、次のコマンドを入力してください。

Spring Session ネームスペース未指定の場合

redis-cli flushall
Wagby アプリケーション起動時に、内部で上記コマンドを発行しています。

Spring Session ネームスペースを指定していた場合

ネームスペースによって「(1つのRedisサーバと紐づく、複数のWagbyアプリケーションの)どれか」を指定した削除を行うことができます。

(1) ネームスペースに対応したキー一覧を取得する

次のコマンドで、ネームスペースに対応するキーを取得することができます。

redis-cli keys "spring:session:wagbyapp1:*"

次のような出力結果を得ることができます。

1) "spring:session:wagbyapp1:sessions:56bd67cd-080c-4445-b9a1-8210352d17ca"
2) "spring:session:wagbyapp1:expirations:1554370260000"
3) "spring:session:wagbyapp1:sessions:expires:56bd67cd-080c-4445-b9a1-8210352d17ca"
4) "spring:session:wagbyapp1:index:org.springframework.session.FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME:admin"
5) "spring:session:wagbyapp1:expirations:1554369120000"
6) "spring:session:wagbyapp1:sessions:a5c73b3f-b564-4515-9df9-0ae62a2ed89c"

(2) キーを指定して削除を行う

上で得られたキーを一つずつ指定して、Redisサーバから削除します。例を示します。

redis-cli del "spring:session:wagbyapp1:index:org.springframework.session.FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME:admin"

1回のコマンド実行で、複数のキーを指定することもできます。

redis-cli del "spring:session:wagbyapp1:expirations:1554370260000" "spring:session:wagbyapp1:sessions:expires:56bd67cd-080c-4445-b9a1-8210352d17ca" "spring:session:wagbyapp1:index:org.springframework.session.FindByIndexNameSessionRepository.PRINCIPAL_NAME_INDEX_NAME:admin" "spring:session:wagbyapp1:expirations:1554369120000" "spring:session:wagbyapp1:sessions:a5c73b3f-b564-4515-9df9-0ae62a2ed89c"

しかし、キーにワイルドカードを使うことはできません。次のように * を指定しても削除されません。

redis-cli del "spring:session:wagbyapp1:*"

シェルスクリプトとの併用による、複数キーの一括削除

redis-cli コマンドでワイルドカード指定が使えないという制約を、(OSが提供する)シェルスクリプトとの併用で解消する方法を紹介します。

Linux OS の場合、次のようにxargsを使って1回で消す方法があります。

redis-cli keys "spring:session:wagbyapp1:*" | xargs redis-cli del

Windows OS の場合、PowerShell を使います。

redis-cli keys "spring:session:wagbyapp1:*" | % { redis-cli del $_ }