大規模な Web アプリケーションでは、セッション管理が非常に重要ですが、単一マシンのストレージでは満足できません。
通常、次の 1 つの方法があります:
セッションをデータベースに永続化します。ただし、欠点は、読み取りと書き込みのコストが高すぎることです。
<!--基于redis的分布式session存储--> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency>
Configure application.properties ファイルの Redis 接続プロパティ
###### Redis config start ###### spring.redis.database=0 spring.redis.host=192.168.41.60 spring.redis.port=6379 spring.redis.password= spring.redis.pool.max-active=20 spring.redis.pool.max-wait=-1 spring.redis.pool.max-idle=8 spring.redis.pool.min-idle=0 spring.redis.timeout=0 ###### Redis config end ######
ステップ 2: @EnableRedisHttpSession アノテーションを開く
@Configuration @EnableRedisHttpSession(redisNamespace = "mysession",maxInactiveIntervalInSeconds = 60*60*24) public class SessionConfig@EnableRedisHttpSession アノテーションのソース コードは次のとおりです。 3 つのパラメータを設定できます:
: セッションが作成されたら、すぐに保存します。
ON_SAVE: セッションの作成時には保存されませんが、データの追加時に保存されます。セッションへの接続
@Retention(java.lang.annotation.RetentionPolicy.RUNTIME) @Target({ java.lang.annotation.ElementType.TYPE }) @Documented @Import(RedisHttpSessionConfiguration.class) @Configuration public @interface EnableRedisHttpSession int maxInactiveIntervalInSeconds() default 1800; String redisNamespace() default ""; RedisFlushMode redisFlushMode() defaultステップ 3: テスト
@RestController public class HelloController @RequestMapping("/hello/{username}") public String hello(HttpSession session, @PathVariable(value = "username") String username) { session.setAttribute("username", username); return "保存session到Redis成功"; } @RequestMapping("/getName") public String getUsername(HttpSession session) { String username = (String) session.getAttribute("username"); return
以上がSpring Boot を使用して Redis に基づいた分散セッション キャッシュを迅速に構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。