正則表達式02 5.4正則表達式語法02 5.4.6捕獲分組 詳見5.3.3 例子 package li.regexp; import java.util.regex.Matcher; import java.util.regex.Pattern; //演示分組 public class RegEx ...
分散式Session如何存儲
一、介紹
Session(會話),用來記錄信息確定用戶身份,保存在服務端。當客戶端瀏覽器訪問伺服器時,伺服器會把客戶端信息保存在伺服器上,這個就是Session。和Session對應的是Cookie,Cookie也是記錄信息確定用戶身份的,不同的是,Cookie存儲在客戶端,Session存儲在服務端。一般會結合使用,Session存儲重要信息,次要信息使用Cookie存儲。
對比:
Session Cookie 存儲在服務端 存儲在客戶端 安全性高 安全性低,存儲在客戶端,可以獲取進行分析 訪問增多時,會占用伺服器性能 保存在客戶端,會減輕伺服器壓力 支持任意大小、類型的數據 數據不能超過4K,並且多數瀏覽器會顯示Cookie個數
二、分散式Session
在分散式系統中,我們需要考慮分散式事務、介面冪等性、分散式鎖、分散式Session等等。分散式事務我們可以使用阿裡巴巴開源的seata框架解決,今天我們就來講講分散式Session。
三、實現方式
-
不使用Session
我們可以使用Token存儲用戶信息,使用時從資料庫、緩存中讀取,例如存儲在redis中,這樣請求無論到哪個伺服器,我們都可以讀取到用戶信息。也可以使用JWT,可以將用戶信息加密到Token交給客戶端存儲,服務端不保存任何用戶信息,只進行驗證。
-
使用Tomcat+Redis
我們可以在Tomcat的配置文件中進行設置,設置成功之後,Tomcat會將Session存儲到Redis中,這樣我們訪問不通的Tomcat時,可以保證session是共用的。
context.xml文件
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="127.0.0.1" port="6379" database="0" maxInactiveInterval="60"/>
-
使用Spring Session+Redis
我們可以使用Spring Session和Redis實現共用存儲Session,這樣就不依賴部署的Web容器。下麵我們簡單講解一些配置和使用,感興趣的小伙伴可以動手試試。
依賴:pom.xml
<dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> <version>1.2.1.RELEASE</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8.1</version> </dependency>
配置文件:
<bean class="org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration"/> <bean class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"> <property name="hostName" value="127.0.0.1" /> <property name="password" value="123654" /> <property name="port" value="6379" /> <property name="database" value="0" /> </bean>
web.xml
<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>
原文鏈接:https://monkey.blog.xpyvip.top/archives/fen-bu-shi-session-ru-he-cun-chu