Spring Session+Redisの動作確認

Dev/Java/Spring Boot
Java
Spring Boot
Spring Session
Redis

更新日時 : 2021/03/13 11:04
投稿日時 : 2020/07/19 13:07

業務でRedisをセッション管理などに使っているが、普段意識していないKeyとValueについて調べてみた。

サンプル
https://github.com/vagivagi/demo-redis

Spring Session + Redis

Spring SessionとRedisの連携は簡単だ。org.springframework.boot:spring-boot-starter-data-redisorg.springframework.session:spring-session-data-rediを依存に追加すれば良い。

dependencies {
  implementation 'org.springframework.boot:spring-boot-starter-data-redis'
  implementation 'org.springframework.boot:spring-boot-starter-web'
  implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
  testImplementation('org.springframework.boot:spring-boot-starter-test') {
    exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
  }
  compile 'org.springframework.session:spring-session-data-redis'
}

@SessionAttributesの中身

ライブラリの設定が終わったら、セッションを使うクラスを作成して、redisを一緒にSpringBootアプリケーションをローカル起動する。

Controllerクラス作成

@SessionAttributesに適当なフォームクラスのインスタンスを設定して、ローカル起動して、画面からデータを入力する。


@Controller
@SessionAttributes("userForm")
@RequestMapping("user")
public class UserController {

  @GetMapping("input")
  String inputForm(Model model) {
    UserForm user = new UserForm();
    model.addAttribute("userForm", user);
    return "form";
  }
  // ...
}

Redisの起動とredis-cliでキー名の確認


前提

  1. docker-composeを使って環境設定しているので、dockerを事前に設定する
  2. redis-cliを使えるようにしておく

spring:session:...のようなキーがRedisに入力されていることが分かる。大した設定をせずに、Key-Valueストアにセッション情報を格納できるので、楽だった。Keyの命名規則など意識せずに使えることもメリット。


$ docker-compose up -d #dockerでredisローカル起動
$ redis-cli
127.0.0.1:6379> keys *
1) "spring:session:expirations:1595164620000"
2) "spring:session:sessions:expires:62ef319b-ff5e-4615-b8c3-3e4a20c1d1e6"
3) "spring:session:sessions:62ef319b-ff5e-4615-b8c3-3e4a20c1d1e6"

余談

前職だとRedisのようないわゆるNoSQLを含めた構成のアプリはあまり見かけなかった。オンプレミス環境であまりアクセス数が多くないアプリが多かったため、導入していなかったかもしれないが、もし導入するとしたら、どういう口実で導入すれば良かったか悩ましい。まあ既存アプリに導入することは考えず、新規アプリでクラウドで構築する案件だったら、しれっと構成に入れておけばいいのか。

Spring Sessionに関する別調査

同サンプルを用いて、@SessionAttributesを付与したクラスの動作を追加検証した。 https://vagivagi.com/entries/22