天天看點

Shrio+Redis實作tomcat叢集session共享

  當我們使用了nginx做項目叢集以後,就會出現一個很嚴重的問題亟待解決,那就是:tomcat叢集之間如何實作session共享的問題,如果這個問題不解決,就會出現登陸過後再次請求資源依舊需要登陸的問題。這篇文章我們就解決這個問題。

1.在pom.xml中添加shiro-redis和jedis的依賴

2.首先我們需要對redis進行內建,在resources下建立config.properties

3.在resources/spring檔案夾下建立spring-redis.xml來內建redis操作用戶端

4.添加redisClient.java作為通路redis的用戶端

5.接着,我們對spring-shiro.xml做如下修改(紅色标記的部分)

6.spring.xml做如下修改

到此我們就完了shiro+redis實作session共享的問題,其實也很簡單,其中的實作邏輯也很簡單,就是shiro的攔截器會首先去redis裡面擷取session,作為當本次請求的session.

  通過本文,我們就完成了spring+shiro+redis實作叢集session共享的問題,經過親測可行。但有一點遺憾的地方,就是每次請求至少會有8次redis的讀操作,一次寫操作,這個問題還沒有找到很好的解決辦法,本地使用ehcahe也不太現實,因為涉及到本地緩存和redis緩存同步的問題,如果你有好的辦法,歡迎讨論交流學習!