當前位置:首頁 » 文件管理 » springboot緩存

springboot緩存

發布時間: 2023-07-24 04:10:35

㈠ SpringBoot + Shiro (四)緩存&記住密碼

最終demo

到這節為止,我們已經實現了身份驗證和許可權驗證。但是,如果我們登錄之後多次訪問 http://localhost:8080/userInfo/userDel 的話,會發現許可權驗證會每次都執行一次。這是有問題的,因為像用戶的許可權這些我們提供給shiro一次就夠了。

下面,我們開始給shiro添加緩存支持:

在 com.example.demo.config.Shiro.ShiroConfiguration 中添加以下方法。

將緩存對象注入到 SecurityManager 中:

在src/main/resouces/config中添加ehcache-shiro.xml配置文件:

啟動項目,再多次訪問 http://localhost:8080/userInfo/userDel ,這時候只會在後台列印一次配置許可權的信息了,說明shiro緩存起了作用。

---------------------下面我們開始配置記住密碼-----------

將rememberMeManager注入到SecurityManager中

在 ShiroFilterFactoryBean 中添加記住我過濾器 user ,添加 user 過濾器的資源在記住我或認證之後就可以直接訪問了。

最後,在login.html頁面添加記住我單選框

啟動項目,正常登錄後關閉瀏覽器,再打開瀏覽器輸入 http://localhost:8080/index ,這時候就可以直接訪問index頁面,不需要再登錄了。

SpringBoot + Shiro (一)基礎工程搭建
SpringBoot + Shiro (二)身份校驗和角色設置
SpringBoot + Shiro (三)許可權
SpringBoot + Shiro (四)緩存&記住密碼
SpringBoot + Shiro (五)驗證碼

最後,感謝幾位作者的文章解惑:
springboot整合shiro-登錄認證和許可權管理
Spring Boot Shiro許可權管理【從零開始學Spring Boot】
Spring boot 中使用Shiro

最後幫朋友打個小廣告

一個有趣的迷你小程序

㈡ 2022-03-12 SpringBoot 使用redis做緩存,設置失效時間以及序列化

SpringBoot的cache緩存,是針對返回值的一種操作
springboot使用redis做緩存時,默認只需要導入redis依賴,即可實現使用redis做緩存

不需要導入cache依賴
在啟動類上加上 @EnableCaching 即可開啟緩存功能
關於各個註解的使用,這里不再細說,網上詳細的教程很多,這里主要講一下如何指定過期時間

默認是永不過期,如果需要指定過期時間,則需要增加配置類

㈢ SpringBoot進階之緩存中間件Redis

大家好,一直以來我都本著 用最通俗的話理解核心的知識點, 我認為所有的難點都離不開 「基礎知識」 的鋪墊

「大佬可以繞過 ~」

本節給大家講講 java的SpringBoot框架」 , 之前我們學習的都是java的基礎知識和底層提供的一些能力,我們日常工作都是在寫介面。在我們在產品開發中,一般我們都會選擇比較穩定的框架來幫我們加速開發,不會自己去造輪子,而在java眾多框架中,spring框架表現的非常好,大部分公司都會首選它作為開發框架,而至今,大部分企業都是以 springboot 來構建項目了,一個穩健的系統需要引入穩定的技術~

如果你是一路看過來的,很高興你能夠耐心看完。前幾期都是帶大家學習了 SpringBoot 的基礎使用以及集成 mybatis 開發,這也是我們寫業務的基礎,如果你還不熟悉這些,請先看完它們。接下來的幾期內容將會帶大家進階使用,會先講解基礎 中間件 的使用和一些場景的應用,或許這些技術你聽說過,沒看過也沒關系,我會帶大家一步一步的入門,耐心看完你一定會有 收獲 ,本期將會給大家講解最熱門的緩存中間件技術 Redis ,同樣的,我們集成到 Springboot 中。最近github可能會被牆,所以我把源碼放到了國內gitee上,本節我們依然使用上期的代碼

Redis 是由義大利人Salvatore Sanfilippo(網名:antirez)開發的一款內存高速緩存資料庫。全稱叫 Remote Dictionary Server(遠程數據服務) 是由 C語言 編寫的,Redis是一個 key-value 存儲系統,它支持豐富的數據類型,如: string、list、set、zset(sorted set)、hash

它本質上是一種鍵值對資料庫,我們之前學習的 mysql 它是持久層的關系型資料庫,而 redis 它的存儲主要存在 內存 中。我們都知道在 內存 中的數據讀取是非常快的,就好比你把一個變數存到磁碟讀取和直接放到代碼中運行,肯定是在代碼中拿到的速度快,因為運行時期,都是直接存到內存的。

給大家總結一下:

有了基本的概念之後,我們下面進行環境搭建,在學習階段,安裝 redis 很簡單,生產環境一般我們也會選擇雲產品,一切為了服務保障,雖說它只是做緩存用,但也是系統的一把 保護傘

如果你是 mac 用戶,你可以運行如下命令:

安裝完成後會提示你運行命令,運行即可。

win 用戶也很簡單,直接下載 redis 軟體,雙擊運行即可,運行之後它會有一個小方塊的圖案,和 locahost:6379 的log,說明運行成功了。初始階段沒有配置的 redis 默認 host 就是本地, port 就是 6379 , 而且是 沒有密碼 就可以訪問的。

推薦一個客戶端軟體 Redis Desktop Manager ,它是 redis 的客戶端界面軟體,方便麵我們學習的時候 清理緩存 使用,生產慎連。

我們不給大家講它的基本命令使用,它也有語法,可以通過類似命令執行,如果想學習的小夥伴,可以自行搜索。本期重點內容是在 sprinboot 中的使用,我們平時開發不可能是去命令行里敲的,都是代碼里執行,而目前市面上有很多封裝好的庫,我們可以直接調用它的方法,很方便的就可以操作它了,不用記一些繁瑣的命令,下面我們就實際操作一下:

修改 pom.xml

修改 application.yml :

redis 默認是有 16 個庫,不是 15 個啊,從 0 開始算的,我們隨便連一個

通過代碼很好理解, 首先需要引入 StringRedisTemplate ,然後需要設置一個 key ,那麼思考一下,這個 key 允許重復嗎

我們進客戶端看一下,發現 key 還是只有一個,但是值變成了新的值了,所以可以得知 key 是唯一的,我們重新設置的時候相當於刷新了它。

redis 中刪除緩存有兩種方式,一種是自我消亡,也就是 過期 銷毀,還有有一種是 主動 銷毀,我們先看一下,過期時間如何設置

我們設置了 10s 後過期,過完10s後發現,這個```key data``消失了。我們在看看如何主動刪除

我們可以利用 Redis 做一個計數器,實現自增功能,你可以用它做網站訪問統計

通常做法,我們會把它封裝一下,後續使用直接引入封裝好的即可,把它直接交給 Springboot容器 管理

其實這個類,你還可以繼續進一步封裝,比如約束 key 的規范,約束過期時間,約束數據類型等等,這一切也都是為了規范和後期維護,防止濫用緩存

緩存的主要場景是用於解決熱點數據問題,因為這些數據是訪問頻率比較高的,當大量的請求進來, mysql 可能壓力很大,這樣一來,數據查詢效率就很慢,用戶肯不高興等了,這樣用戶體驗很不好。所以我們一般做法,都是把這些熱點數據放到緩存里,因為緩存讀取速度很快。當有新數據的時候,我們再及時更新它,一般流程是先查詢緩存,查到了直接返回緩存數據,查不到再走資料庫,然後再刷回緩存。

但是並發足夠大的時候,還是會暴露出很多問題,比如面試常問的一些高頻問題 緩存雪崩、緩存穿透、緩存雪崩 ,這些問題後邊會給大家專門講,和如何去防範。所以總的來說,引入任何一門技術並不是萬事大吉,還需我們不斷的在實踐中積累經驗

本期到這里就結束了,總結一下,我們了解了什麼是 redis ,以及在 springboot 中如何去使用它們,很簡單,沒什麼復雜的東西。但這里想多說一點的是,緩存的設計卻是很復雜的,因為工具是死的,人是活的,我們如何正確設計,需要我們在項目中不斷的積累。

我們之前教大家查詢列表數據,都是所有數據返回,還沒有教大家如何去做分頁,下期將帶大家學習一下 mybatis 分頁插件的使用 ,下期不見不散, 關注我,不迷路~

㈣ Spring boot + Mybatis plus + Redis實現二級緩存

 1.1   通過application.yml配置redis的連接信息,springboot默認redis用的lecttuce客戶端,如果想用jedis的話,只需要在pom.xml中引入redis的時候排除在lecttuce,然後再導入jedis的jar包就好了,

1.2 打開mybatis plus的二級緩存,為true的時候是開啟的,false是關閉二級緩存

1.3 編寫緩存類繼承Cache類,實現Cache中的方法

1.4 早*.xml中加上<cache>標簽,type寫你所編寫二級緩存類的路徑

㈤ SpringBoot進階之整合Shiro實現緩存和會話管理

大家好,一直以來我都本著用最通俗的話理解核心的知識點, 我認為所有的難點都離不開 「基礎知識」 的鋪墊。目前正在出一個 SpringBoot 長期系列教程,從入門到進階, 篇幅會較多~

「大佬可以繞過 ~」

如果你是一路看過來的,很高興你能夠耐心看完。之前帶大家學了 Springboot 基礎部分,對基本的使用有了初步的認識, 接下來的幾期內容將會帶大家進階使用,會先講解基礎 中間件 的使用和一些場景的應用,或許這些技術你聽說過,沒看過也沒關系,我會帶大家一步一步的入門,耐心看完你一定會有 收獲 ~

上期帶大家學習了 Shiro 中如何進行許可權認證,本期將帶大家學習 Shiro 中如何進行 緩存和會話管理 ,最後我們將做一個在線用戶管理以及強制下線用戶的功能,同樣的,我們集成到 Springboot 中。

首先我們要明白使用緩存的原因,為啥要用它 還記得之前帶大家實現的 用戶認證 許可權認證 嗎,那裡我使用了 MockUser ,真實場景中是要去數據查詢的,這樣一來就會產生耗時,請求多的時候資料庫肯定忙不過來了,所以我們需要使用緩存來提高程序響應速度

緩存使用 Redis ,下面就帶大家整一下:

修改 ShiroConfig ,添加方法

這樣就可以了,大家可以把測試獲取用戶的地方改成資料庫獲取,看下 控制台 sql日誌會明顯減少,因為有一部分是從緩存拿的

這部分功能還是比較好玩的,學完可以自由發揮做一個房間功能,可以加入可以踢人,下面我們就開整

修改 ShiroConfig ,添加方法,因為我們使用的是 Redis 緩存

實現 SessionListener

最後同樣的,想要開啟需要我們注入到 Manager 中:

我們先定義一個類,用來記錄在線用戶:

那麼怎麼獲取呢?我們定義一個方法,大家實踐中可以抽到 Service 層,這里方便演示,我直接寫到控制器里

如果你看誰不爽,可以直接讓他下線,hhh~

是不是很簡單,這里就不演示了,大家自行試試

本期內容就到這里結束了,總結一下,本節主要講了 Shiro 如何進行緩存以及如何進行用戶會話管理,大家可以舉一反三,做一些小功能嘗試嘗試

下期給大家講講 Shiro 中如何整合 JWT ,這個大家應該不陌生,如果不知道啥是 JWT 也沒關系,我會帶大家一步一步入門,下期也是 Shiro 系列的終極篇,內容可能有點多,耐心看完哦。歡迎加群一起學習交流 ~

熱點內容
滑板鞋腳本視頻 發布:2025-02-02 09:48:54 瀏覽:433
群暉怎麼玩安卓模擬器 發布:2025-02-02 09:45:23 瀏覽:557
三星安卓12彩蛋怎麼玩 發布:2025-02-02 09:44:39 瀏覽:744
電腦顯示連接伺服器錯誤 發布:2025-02-02 09:24:10 瀏覽:537
瑞芯微開發板編譯 發布:2025-02-02 09:22:54 瀏覽:147
linux虛擬機用gcc編譯時顯示錯誤 發布:2025-02-02 09:14:01 瀏覽:240
java駝峰 發布:2025-02-02 09:13:26 瀏覽:652
魔獸腳本怎麼用 發布:2025-02-02 09:10:28 瀏覽:538
linuxadobe 發布:2025-02-02 09:09:43 瀏覽:212
sql2000資料庫連接 發布:2025-02-02 09:09:43 瀏覽:726