目次
Spring Boot を使用して、Redis に基づく分散セッション キャッシュ ソリューションを迅速に構築します
#Maven コアの依存関係を追加する spring-session-data-redis
ホームページ データベース Redis Spring Boot を使用して Redis に基づいた分散セッション キャッシュを迅速に構築する方法

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

May 27, 2023 pm 08:49 PM
redis session spring boot

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windows 11 10.0.22000.100 のインストール時の 0x80242008 エラーの解決策 Windows 11 10.0.22000.100 のインストール時の 0x80242008 エラーの解決策 May 08, 2024 pm 03:50 PM

Windows 11 10.0.22000.100 のインストール時の 0x80242008 エラーの解決策

Redisでパスワードを変更する方法 Redisでパスワードを変更する方法 Apr 20, 2024 am 03:00 AM

Redisでパスワードを変更する方法

PHP機能のボトルネックを分析し、実行効率を向上 PHP機能のボトルネックを分析し、実行効率を向上 Apr 23, 2024 pm 03:42 PM

PHP機能のボトルネックを分析し、実行効率を向上

Redisはメモリキャッシュですか? Redisはメモリキャッシュですか? Apr 20, 2024 am 05:26 AM

Redisはメモリキャッシュですか?

Golang API のキャッシュ戦略と最適化 Golang API のキャッシュ戦略と最適化 May 07, 2024 pm 02:12 PM

Golang API のキャッシュ戦略と最適化

redis は非リレーショナル データベースですか? redis は非リレーショナル データベースですか? Apr 20, 2024 am 05:36 AM

redis は非リレーショナル データベースですか?

erlang と golang ではどちらのパフォーマンスが優れていますか? erlang と golang ではどちらのパフォーマンスが優れていますか? Apr 21, 2024 am 03:24 AM

erlang と golang ではどちらのパフォーマンスが優れていますか?

PHP 開発におけるキャッシュ メカニズムとアプリケーションの実践 PHP 開発におけるキャッシュ メカニズムとアプリケーションの実践 May 09, 2024 pm 01:30 PM

PHP 開発におけるキャッシュ メカニズムとアプリケーションの実践

See all articles