Spring Boot を使用して Redis に基づいた分散セッション キャッシュを迅速に構築する方法

WBOY
リリース: 2023-05-27 20:49:27
転載
939 人が閲覧しました

Spring Boot を使用して、Redis に基づく分散セッション キャッシュ ソリューションを迅速に構築します

大規模な Web アプリケーションでは、セッション管理が非常に重要ですが、単一マシンのストレージでは満足できません。

通常、次の 1 つの方法があります:

  1. セッションをデータベースに永続化します。ただし、欠点は、読み取りと書き込みのコストが高すぎることです。

  2. #セッション解除 (情報は Cookie に保存されます。ただし、サイズが制限されており、安全ではないという欠点があります。

3. セッションを保存します) Redis などの分散 nosql データベース

ステップ 1: Spring Boot 開発環境を構築する

#Maven コアの依存関係を追加する spring-session-data-redis

<!--基于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 つのパラメータを設定できます:

    maxInactiveIntervalInSeconds: セッション内のデータの有効期限 (Redis のセッションの有効期限ではありません)
  • ##私の構成では、現在のアプリケーションを識別するために使用される "mysession" という名前の名前空間を指定しました。
  • redisFlushMode: Redis がセッションを保存する方法、デフォルトの ON_SAVE
  • には 2 つの方法があります:
  • IMMEDIATE

    : セッションが作成されたら、すぐに保存します。
    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
ログイン後にコピー

ブラウザがリンク http://localhost:8080/ にアクセスしたときhello/admin の場合、

hello メソッドはブラウザのパラメータによって渡されたリンクを受け取り、それらをセッションに保存し、セッションを Redis に保存します。

Redis で情報を表示すると、次の情報を確認できます。

spring:session が自動的に追加されます。作成された名前空間 mysession は、このデフォルト ディレクトリの下にあります。

次に、http://localhost:8080/getName にアクセスします。ブラウザーに、先ほどセッションで保存した admin## が表示されることがわかります。

以上がSpring Boot を使用して Redis に基づいた分散セッション キャッシュを迅速に構築する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート