11.26 Spring Boot 整合 Redis,用起來真簡單

來源:http://rrd.me/epDTz

Redis 是目前業界使用最廣泛的內存數據存儲。相比 Memcached,Redis 支持更豐富的數據結構,例如 hashes, lists, sets 等,同時支持數據持久化。除此之外,Redis 還提供一些類數據庫的特性,比如事務,HA,主從庫。可以說 Redis 兼具了緩存系統和數據庫的一些特性,因此有著豐富的應用場景。本文介紹 Redis 在 Spring Boot 中兩個典型的應用場景。


如何使用

1、引入依賴包

Spring Boot 整合 Redis,用起來真簡單

Spring Boot 提供了對 Redis 集成的組件包:spring-boot-starter-data-redis,spring-boot-starter-data-redis依賴於spring-data-redis 和 lettuce 。Spring Boot 1.0 默認使用的是 Jedis 客戶端,2.0 替換成 Lettuce,但如果你從 Spring Boot 1.5.X 切換過來,幾乎感受不大差異,這是因為 spring-boot-starter-data-redis 為我們隔離了其中的差異性。

Lettuce 是一個可伸縮線程安全的 Redis 客戶端,多個線程可以共享同一個 RedisConnection,它利用優秀 netty NIO 框架來高效地管理多個連接。

2、添加配置文件

Spring Boot 整合 Redis,用起來真簡單

3、添加 cache 的配置類

Spring Boot 整合 Redis,用起來真簡單

注意我們使用了註解:@EnableCaching來開啟緩存。

4、好了,接下來就可以直接使用了

Spring Boot 整合 Redis,用起來真簡單

以上都是手動使用的方式,如何在查找數據庫的時候自動使用緩存呢,看下面;

5、自動根據方法生成緩存

Spring Boot 整合 Redis,用起來真簡單

其中 value 的值就是緩存到 Redis 中的 key

共享 Session

分佈式系統中,Session 共享有很多的解決方案,其中託管到緩存中應該是最常用的方案之一,

Spring Session 官方說明

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

Spring Session 提供了一套創建和管理 Servlet HttpSession 的方案。Spring Session 提供了集群 Session(Clustered Sessions)功能,默認採用外置的 Redis 來存儲 Session 數據,以此來解決 Session 共享的問題。

如何使用

1、引入依賴

Spring Boot 整合 Redis,用起來真簡單

2、Session 配置

Spring Boot 整合 Redis,用起來真簡單

maxInactiveIntervalInSeconds: 設置 Session 失效時間,使用 Redis Session 之後,原 Spring Boot 的 server.session.timeout 屬性不再生效。

好了,這樣就配置好了,我們來測試一下

3、測試

添加測試方法獲取 sessionid

Spring Boot 整合 Redis,用起來真簡單

登錄 Redis 輸入 keys 'sessions'

t<session>

其中 1472976480000 為失效時間,意思是這個時間後 Session 失效, db031986-8ecc-48d6-b471-b137a3ed6bc4 為 sessionId,登錄 http://localhost:8080/uid 發現會一致,就說明 Session 已經在 Redis 裡面進行有效的管理了。

我自己是一名從事了多年開發的Java老程序員,辭職目前在做自己的Java私人定製課程,今年年初我花了一個月整理了一份最適合2019年學習的Java學習乾貨,從最基礎的JavaSE到Spring各種框架都有整理,送給每一位Java小夥伴,想要獲取的可以關注我的頭條號並在後臺私信我:Java,即可免費獲取。

"/<session>


分享到:


相關文章: