Redisによる分散セッション共有

2769 ワード

分散システムではsessiong共有には多くのソリューションがあり、キャッシュに管理されるのが最も一般的なソリューションの1つであるべきです.
Spring Session公式説明Spring Session provides an API and implementations for managing a user’s session information.使用方法
1、導入依存
<dependency>
    <groupId>org.springframework.sessiongroupId>
    <artifactId>spring-session-data-redisartifactId>
dependency>

2、Session配置:
@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 86400*30)
public class SessionConfig {
}

maxInactiveIntervalInSeconds:セッションの有効期限を設定し、Redisセッションを使用した後、元のSringBootのserver.session.timeoutプロパティは有効になりません
では、これで構成しました.3、テスト追加テスト方法をテストしてsessionidを取得します.
@RequestMapping("/uid")
String uid(HttpSession session) {
    UUID uid = (UUID) session.getAttribute("uid");
    if (uid == null) {
        uid = UUID.randomUUID();
    }
    session.setAttribute("uid", uid);
    return session.getId();
}

ログインredis入力keys‘sessions’
t<spring:session:sessions:db031986-8ecc-48d6-b471-b137a3ed6bc4
t(spring:session:expirations:1472976480000

このうち147276480000は失効時間であり、この時間後にsessionが失効することを意味し、db031986-8ecc-48d6-b471-b137a3ed6bc4はsessionIdであり、登録http://localhost:8080/uid一致することを発見すると、sessionはredisの中で有効な管理を行っていることを示します.
2台以上でセッションを共有する方法
実は、上記の手順で別のプロジェクトでもう一度構成し、起動すると自動的にセッション共有が行われます.
参照先:http://www.ityouknow.com/springboot/2016/03/06/springboot(%E4%B8%89)-Spring-Boot%E4%B8%ADRedis%E7%9A%84%E4%BD%BF%E7%94%A8.html