日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

spring-session用redis实现session共享实践

發布時間:2025/4/5 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 spring-session用redis实现session共享实践 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是spring session?

Spring Session provides an API and implementations for managing a user’s session information.

簡單一句話,spring session幫你管理用戶的session信息。

為什么使用spring session?

通常情況下,Tomcat、Jetty等Servlet容器,會默認將Session保存在內存中。如果是單個服務器實例的應用,將Session保存在服務器內存中是一個非常好的方案。但是這種方案有一個缺點,就是不利于擴展。

目前越來越多的應用采用分布式部署,用于實現高可用性和負載均衡等。那么問題來了,如果將同一個應用部署在多個服務器上通過負載均衡對外提供訪問,如何實現Session共享?

實際上實現Session共享的方案很多,其中一種常用的就是使用Tomcat、Jetty等服務器提供的Session共享功能,將Session的內容統一存儲在一個數據庫(如MySQL)或緩存(如Redis)中。

使用spring session有以下好處:

  spring session是開源的用戶session管理軟件,免費,易控且容易擴展;

  spring session可以使服務器無狀態;

  服務器宕機或者重啟不會丟失用戶session信息,對用戶更友好。

  不需要負載均衡器保持粘性

  滿足應用和數據隔離原則

為什么使用spring session data redis呢?

  spring session提供了三種主要實現方式REDIS,JDBC,Hazelcast?

上一篇文章已經介紹了jdbc的實現? 那為什么很多人更喜歡使用Redis實現呢?

  1.應用要求請求響應流暢,快捷,redis是內存服務器,響應很快

?? ? 2. 使用redis做外部存儲,降低了對數據庫或者服務器本身的依賴,更穩定

  3. redis的過期機制更友好

? ? ? ? 4. redis的分片和集群機制,擴展性更好

? ? ? ? ?5. 簡單應用且容易監控

? ? ? ? ?6. 和spring boot集成更緊密。

spring-session-data-redis實戰

前段時間,寫了篇<spring-session-data-redis解決session共享的問題>文章,介紹了spring-session使用redis存儲實現session共享的內部機制,

有讀者提問為什么只有理論沒有實踐?索性就實踐一下。

1.使用sts創建spring-boot項目,項目名稱session-jdbc,使用redis,web(方便測試)的start,創建完項目如下:

?

2.增加spring-session-redis依賴

<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency><dependency><groupId>org.springframework.session</groupId><artifactId>spring-session-data-redis</artifactId></dependency>

3.配置屬性

spring.session.store-type=redis spring.redis.host=localhost spring.redis.password= spring.redis.port=6379 spring.session.redis.namespace=spring:session spring.security.user.name=admin spring.security.user.password=admin spring.session.redis.cleanup-cron=0 * * * * *

4.增加測試類

package com.example.demo;import javax.servlet.http.HttpSession;import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;@RestController @RequestMapping("/redis") public class TestController {@RequestMapping("/welcome")public String welcome(HttpSession httpSession) {httpSession.setAttribute("hello", "world");return "hello world !";} }

5.啟動spring boot項目

6.訪問http://localhost:8080/redis/welcome

?訪問前查看redis情況

?

輸入用戶名密碼 admin/admin

?

訪問后

?

?

總結:

? spring-session-data-redis 使用redis做用戶管理的存儲,主要有以下優點:

1.簡單易用,用戶友好

2.響應快

3.擴展性強

4.穩定性高

5.可監控

參考文獻:

【1】https://www.cnblogs.com/jiafuwei/p/6425604.html

轉載于:https://www.cnblogs.com/davidwang456/p/10363365.html

總結

以上是生活随笔為你收集整理的spring-session用redis实现session共享实践的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。