ホームページ > データベース > Redis > nginx+redis がセッション共有を実現する仕組み

nginx+redis がセッション共有を実現する仕組み

WBOY
リリース: 2023-05-26 12:49:06
転載
1583 人が閲覧しました

1. 最初のステップは、redis をインストールすることです。私のサーバーは Windows です。インストール不要のバージョンをダウンロードしました。解凍するだけです。ディレクトリは次のとおりです。最初、redis はデフォルトでパスワードを必要としませんが、パスワードを設定したい場合は、redis.windows.conf ファイルに移動して requirepass を見つけ、先頭の # 記号を削除し、その後にパスワードを設定します。

nginx+redis がセッション共有を実現する仕組み

2. cmd から redis のルート ディレクトリを入力し、コマンド redis-server.exeredis.windows.conf を入力します。このようにしてredisが起動できるようになり、起動に成功すると以下の画面が表示されます。もちろん、conf ファイルを変更してパスワードを追加することもできます。 requirepass xxxxx

nginx+redis がセッション共有を実現する仕組み

#3. 次に、セッション データのグローバル キャッシュを実現するための設定作業を行うことができます。

1) まず、jar パッケージを追加します。Maven プロジェクトの場合は、次のコードを pom.xml に追加する必要があります。

<!-- redis -->
 <dependency>
  <groupid>org.springframework.session</groupid>
  <artifactid>spring-session-data-redis</artifactid>
  <version>1.3.1.release</version>
  <type>pom</type>
 </dependency>
ログイン後にコピー

Maven プロジェクトでない場合は、次のコードを追加する必要があります。次の jar パッケージを追加します。

nginx+redis がセッション共有を実現する仕組み

2) redis.properties を記述します。コードは次のとおりです。

redis_isopen:yes
#主机地址
redis_hostname=xxx.xxx.xxx.xxx
#端口
redis_port=6379
#密码
redis_password=xxxxxxxx
#连接超时时间
redis_timeout=200000
redis_maxidle:300
redis_maxactive:600
redis_maxwait:100000
redis_testonborrow:true
ログイン後にコピー

は基本的に構成データベースの接続ステートメントと似ています。

3) spring-redis.xml 構成ファイルを作成します。このファイルは、redis に関するいくつかの基本情報を構成します。

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<beans xmlns="http://www.springframework.org/schema/beans"
 xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
 xmlns:util="http://www.springframework.org/schema/util" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"
 xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd ">
 <!-- session设置 maxinactiveintervalinseconds为session的失效时间,单位为秒-->
 <bean
 class="org.springframework.session.data.redis.config.annotation.web.http.redishttpsessionconfiguration">
 <property name="maxinactiveintervalinseconds" value="3600"></property>
 </bean>
 <!-- redis连接池 -->
 <bean id="poolconfig" class="redis.clients.jedis.jedispoolconfig">
 <property name="maxidle" value="${redis_maxidle}" />
 <property name="testonborrow" value="${redis_testonborrow}" />
 </bean>
 <!-- redis连接工厂 -->
 <bean id="connectionfactory"
 class="org.springframework.data.redis.connection.jedis.jedisconnectionfactory">
 <property name="hostname" value="${redis_hostname}" />
 <property name="port" value="${redis_port}" />
 <property name="password" value="${redis_password}" />
 <property name="timeout" value="${redis_timeout}" />
 <property name="poolconfig" ref="poolconfig"></property>
 </bean>
</beans>
ログイン後にコピー

4) application.xml (Spring のメイン設定ファイル) に、次のように redis.properties 設定ファイルのスキャンを追加する必要があります。

<!-- 读取redis参数配置 -->
 <bean id="propertyconfigurer"
 class="org.springframework.beans.factory.config.propertyplaceholderconfigurer">
 <property name="locations">
  <list>
  <value>/web-inf/classes/redis.properties</value>
  </list>
 </property>
 </bean>
ログイン後にコピー

5) 次のように、spring-redis.xml をメイン設定ファイルに導入します。

<import resource="spring-redis.xml" />
ログイン後にコピー

6) web.xml にセッションに関するフィルターを追加します。この方法でのみ、セッションは Redis によって操作されます。

<filter>
 <filter-name>springsessionrepositoryfilter</filter-name>
 <filter-class>org.springframework.web.filter.delegatingfilterproxy</filter-class>
 </filter>
 <filter-mapping>
 <filter-name>springsessionrepositoryfilter</filter-name>
 <url-pattern>/*</url-pattern>
 </filter-mapping>
ログイン後にコピー

この後、redisによるセッション管理を実現していきます。

7) Redis デスクトップ マネージャーと呼ばれる、内部のデータを表示するための Redis クライアントをインストールできます。以下に示すように、redis データベース内のデータを確認することができ、非常に便利です。

nginx+redis がセッション共有を実現する仕組み

#ps. 再度終了するときは、エラーを避けるために次のように記述する必要があります。 (ssh プロジェクト)

public string yipinexit(){
 iterator<string>keys=session.keyset().iterator();
 while(keys.hasnext()){
  string key=keys.next();
  session.remove(key);
 }
 return "yipinexit";
 }
ログイン後にコピー

以上がnginx+redis がセッション共有を実現する仕組みの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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