使用Redis存儲SpringBoot項(xiàng)目中Session的詳細(xì)步驟
使用Redis存儲Spring Boot項(xiàng)目中的Session
在開發(fā)Spring Boot項(xiàng)目時(shí),我們通常會遇到如何高效管理Session的問題。默認(rèn)情況下,Spring Boot會將Session存儲在內(nèi)存中。但在分布式系統(tǒng)中,這種方式顯然不太合適。今天,我們將學(xué)習(xí)如何將Session存儲從內(nèi)存切換到Redis,并驗(yàn)證配置是否成功。
步驟一:添加依賴
dependencies { implementation("org.springframework.boot:spring-boot-starter-data-redis") implementation("org.springframework.session:spring-session-data-redis") }
步驟二:配置Redis連接
接下來,我們需要在配置文件中添加Redis連接信息。你可以選擇使用application.yml
或application.properties
文件。
示例:application.yml
spring: redis: host: localhost port: 6379 password: "" lettuce: pool: max-active: 8 max-idle: 8 min-idle: 0 server: servlet: session: store-type: redis # 使用Redis存儲Session
示例:application.properties
spring.redis.host=localhost spring.redis.port=6379 spring.redis.password= spring.redis.lettuce.pool.max-active=8 spring.redis.lettuce.pool.max-idle=8 spring.redis.lettuce.pool.min-idle=0 server.servlet.session.store-type=redis # 使用Redis存儲Session
步驟三:啟用Spring Session
在主類中添加@EnableRedisHttpSession
注解,使Spring Boot能夠使用Redis管理Session。
示例代碼
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; @SpringBootApplication @EnableRedisHttpSession public class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); } }
步驟四:檢查和測試
完成配置后,重新啟動(dòng)你的Spring Boot應(yīng)用程序,并進(jìn)行以下驗(yàn)證:
方法一:使用Redis命令行客戶端
- 連接到Redis服務(wù)器:
redis-cli -h localhost -p 6379
- 查詢Session數(shù)據(jù):
KEYS spring:session:sessions:*
- 查看具體Session數(shù)據(jù):
HGETALL spring:session:sessions:<session-id>
方法二:使用Redis GUI工具
你可以使用Redis Desktop Manager、Medis或RedisInsight等圖形界面工具,連接到Redis服務(wù)器并查看存儲的Session數(shù)據(jù)。
方法三:在代碼中查看
通過添加日志或調(diào)試信息,輸出當(dāng)前的Session ID和內(nèi)容。
示例代碼
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpSession; import java.util.Enumeration; @RestController public class SessionController { @Autowired private StringRedisTemplate redisTemplate; @GetMapping("/check-session") public String checkSession(HttpSession session) { String sessionId = session.getId(); Enumeration<String> attributeNames = session.getAttributeNames(); StringBuilder sessionData = new StringBuilder("Session ID: " + sessionId + "\n"); while (attributeNames.hasMoreElements()) { String attributeName = attributeNames.nextElement(); sessionData.append(attributeName).append(": ").append(session.getAttribute(attributeName)).append("\n"); } // 在日志中輸出Session ID和內(nèi)容 System.out.println(sessionData.toString()); // 檢查Redis中是否存在該Session ID Boolean hasKey = redisTemplate.hasKey("spring:session:sessions:" + sessionId); return hasKey != null && hasKey ? "Session stored in Redis" : "Session not found in Redis"; } }
通過訪問 /check-session
端點(diǎn),可以查看當(dāng)前Session的ID和內(nèi)容,并確認(rèn)是否成功存儲在Redis中。
到此這篇關(guān)于使用Redis存儲SpringBoot項(xiàng)目中Session的詳細(xì)步驟的文章就介紹到這了,更多相關(guān)Redis存儲SpringBoot的session內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
如何監(jiān)聽Redis中Key值的變化(SpringBoot整合)
測試過程中我們有一部分常量值放入redis,共大部分應(yīng)用調(diào)用,但在測試過程中經(jīng)常有人會清空redis,回歸測試,下面這篇文章主要給大家介紹了關(guān)于如何監(jiān)聽Redis中Key值變化的相關(guān)資料,需要的朋友可以參考下2024-03-03在Redis中如何保存時(shí)間序列數(shù)據(jù)詳解
與發(fā)生時(shí)間相關(guān)的一組數(shù)據(jù),就是時(shí)間序列數(shù)據(jù),這些數(shù)據(jù)的特點(diǎn)是沒有嚴(yán)格的關(guān)系模型,記錄的信息可以表示成鍵和值的關(guān)系,這篇文章主要給大家介紹了關(guān)于在Redis中如何保存時(shí)間序列數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2021-10-10Redis?sentinel哨兵集群的實(shí)現(xiàn)步驟
本文主要介紹了Redis?sentinel哨兵集群的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07內(nèi)存型數(shù)據(jù)庫Redis持久化小結(jié)
redis是一個(gè)支持持久化的內(nèi)存數(shù)據(jù)庫,也就是說redis需要經(jīng)常將內(nèi)存中的數(shù)據(jù)同步到磁盤來保證持久化.redis支持四種持久化方式,一是 Snapshotting(快照)也是默認(rèn)方式,二是Append-only file(縮寫aof)的方式,三是虛擬內(nèi)存方式,四是diskstore方式.今天我們總結(jié)下前2種。2017-09-09Redis?抽獎(jiǎng)大轉(zhuǎn)盤的實(shí)戰(zhàn)示例
本文主要介紹了Redis?抽獎(jiǎng)大轉(zhuǎn)盤的實(shí)戰(zhàn)示例,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12Redis的Sentinel解決方案介紹與運(yùn)行機(jī)制
這篇文章主要介紹了Redis的Sentinel解決方案介紹與運(yùn)行機(jī)制, Sentinel 是一款面向分布式服務(wù)架構(gòu)的輕量級流量控制組件,主要以流量為切入點(diǎn),從流量控制、熔斷降級、系統(tǒng)自適應(yīng)保護(hù)等多個(gè)維度來保障服務(wù)的穩(wěn)定性,需要的朋友可以參考下2023-07-07Redis底層數(shù)據(jù)結(jié)構(gòu)詳解
這篇文章主要介紹了Redis底層數(shù)據(jù)結(jié)構(gòu),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08