Spring session整合到Redis過(guò)程解析
為何要用Spring-session
在傳統(tǒng)單機(jī)web應(yīng)用中,一般使用tomcat/jetty等web容器時(shí),用戶(hù)的session都是由容器管理。瀏覽器使用cookie中記錄sessionId,容器根據(jù)sessionId判斷用戶(hù)是否存在會(huì)話session。這里的限制是,session存儲(chǔ)在web容器中,被單臺(tái)服務(wù)器容器管理。
但是網(wǎng)站主鍵演變,分布式應(yīng)用和集群是趨勢(shì)(提高性能)。此時(shí)用戶(hù)的請(qǐng)求可能被負(fù)載分發(fā)至不同的服務(wù)器,此時(shí)傳統(tǒng)的web容器管理用戶(hù)會(huì)話session的方式即行不通。除非集群或者分布式web應(yīng)用能夠共享session,盡管tomcat等支持這樣做。但是這樣存在以下兩點(diǎn)問(wèn)題:
需要侵入web容器,提高問(wèn)題的復(fù)雜
web容器之間共享session,集群機(jī)器之間勢(shì)必要交互耦合

有了spring-session之后,我們可以將session保存到Redis、Mongodb等nosql數(shù)據(jù)庫(kù)。這樣就避免了單點(diǎn)緩存的限制。
Let's do it
1.引入jar包
<dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
2、在application.properties中加入如下配置文件
#設(shè)置session存儲(chǔ)格式為redis spring.session.store-type=redis server.servlet.session.timeout=3600 #session更新策略,有ON_SAVE、IMMEDIATE,前者是在調(diào)用#SessionRepository#save(org.springframework.session.Session)時(shí),在response commit前刷新緩存,#后者是只要有任何更新就會(huì)刷新緩存 spring.session.redis.flush-mode=on-save spring.session.redis.namespace=spring:session #redis配置 spring.redis.database=0 spring.redis.host=10.34.51.234 spring.redis.password=123456 spring.redis.pool.max-active=8 spring.redis.pool.max-idle=8 spring.redis.pool.max-wait=-1 spring.redis.pool.min-idle=0 spring.redis.port=6379
3、配置redis服務(wù)器
(略)
4、編寫(xiě)SpringBoot程序

5、運(yùn)行登錄一下吧

可以看到查看到了session信息
6、未完成序列化操作。不過(guò)我感覺(jué)也沒(méi)必要完成序列化操作吧~
結(jié)束!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Spring整合redis(jedis)實(shí)現(xiàn)Session共享的過(guò)程
- SpringBoot整合Redis、ApachSolr和SpringSession的示例
- spring boot整合redis實(shí)現(xiàn)shiro的分布式session共享的方法
- SpringBoot2.x 整合Spring-Session實(shí)現(xiàn)Session共享功能
- Spring boot集成spring session實(shí)現(xiàn)session共享的方法
- Springboot實(shí)現(xiàn)多服務(wù)器session共享
- 解決前后端分離 vue+springboot 跨域 session+cookie失效問(wèn)題
- SpringCloud實(shí)現(xiàn)Redis在各個(gè)微服務(wù)的Session共享問(wèn)題
相關(guān)文章
mybatis-plus動(dòng)態(tài)表名實(shí)現(xiàn)方法
本文主要介紹了mybatis-plus動(dòng)態(tài)表名實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
JSONObject如何轉(zhuǎn)為實(shí)體類(lèi)對(duì)象
介紹了JSONObject轉(zhuǎn)為實(shí)體類(lèi)對(duì)象的三種方法:JSONObject中的toJavaObject方法和getObject方法支持深轉(zhuǎn)換,而JSON中的parseObject方法只能轉(zhuǎn)換一層對(duì)象,此外,還補(bǔ)充說(shuō)明了在對(duì)JSON轉(zhuǎn)為實(shí)體類(lèi)對(duì)象時(shí),無(wú)論JSON中的數(shù)據(jù)字段是否多于或少于實(shí)體類(lèi)中字段,轉(zhuǎn)化都不會(huì)報(bào)錯(cuò)2024-11-11
Hadoop+HBase+ZooKeeper分布式集群環(huán)境搭建步驟
這篇文章主要介紹了Hadoop+HBase+ZooKeeper分布式集群環(huán)境搭建,集群環(huán)境至少需要3個(gè)節(jié)點(diǎn),1個(gè)Master,2個(gè)Slave,節(jié)點(diǎn)之間局域網(wǎng)連接,可以相互ping通,本文通過(guò)實(shí)例給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04
spring動(dòng)態(tài)控制定時(shí)任務(wù)的實(shí)現(xiàn)
在實(shí)際項(xiàng)目中,經(jīng)常需要?jiǎng)討B(tài)的控制定時(shí)任務(wù),比如通過(guò)接口增加、啟動(dòng)、停止、刪除定時(shí)任務(wù),本文主要介紹了spring動(dòng)態(tài)控制定時(shí)任務(wù)的實(shí)現(xiàn),感興趣的可以了解一下2024-01-01

