J2Cache 2.6.0 釋出,支援分散式 session 儲存管理
J2Cache 2.6.0 版本釋出啦,該版本最最值得關注的就是支援分散式的 session 儲存管理,支援不同的 Servlet 容器。
此外,該版本包含了如下小改動:
-
配置中對值包含空格的處理
-
CacheObject 允許在其他包內使用,並增加支援預設值的屬性讀取
-
增加 removeRegion 方法
-
優化建立 region 的鎖機制
-
支援多種配置讀取方式
Maven
<dependency> <groupId>net.oschina.j2cache</groupId> <artifactId>j2cache-core</artifactId> <version>2.6.0-release</version> </dependency>
但是!!!!最最重要的是增加了全新的分散式 session 儲存模組 session-manager !
session-manager 用來實現對 Java Web 應用的分散式 session 管理,它接管了 Servlet 容器自帶的 session 管理機制,通過兩級快取的引入實現 session 的分散式高效能儲存,同時避免對 redis 造成太大壓力。
使用步驟:
1. 首先引入 maven 依賴:
<dependency> <groupId>net.oschina.j2cache</groupId> <artifactId>j2cache-session-manager</artifactId> <version>1.0.0-beta</version> </dependency>
2. 在 web.xml 中定義全域性過濾器
<filter> <filter-name>j2cache-session-filter</filter-name> <filter-class>net.oschina.j2cache.session.J2CacheSessionFilter</filter-class> <init-param><!-- 記憶體中存放會話數 --> <param-name>session.maxSizeInMemory</param-name> <param-value>2000</param-value> </init-param> <init-param><!-- 會話有效期,單位:秒鐘 --> <param-name>session.maxAge</param-name> <param-value>1800</param-value> </init-param> <!-- cookie configuration --> <init-param> <param-name>cookie.name</param-name> <param-value>J2CACHE_SESSION_ID</param-value> </init-param> <init-param> <param-name>cookie.path</param-name> <param-value>/</param-value> </init-param> <init-param> <param-name>cookie.domain</param-name> <param-value></param-value> </init-param> <!-- redis configuration --> <init-param> <param-name>redis.mode</param-name> <param-value>single</param-value> </init-param> <init-param> <param-name>redis.hosts</param-name> <param-value>127.0.0.1:6379</param-value> </init-param> <init-param> <param-name>redis.channel</param-name> <param-value>j2cache-session</param-value> </init-param> <init-param> <param-name>redis.database</param-name> <param-value>0</param-value> </init-param> ...... </filter> <filter-mapping> <filter-name>j2cache-session-filter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
根據實際環境的情況對配置中的值進行調整,並確保該過濾器優先執行。完整示例請看ofollow,noindex" target="_blank">web.xml
由於 session 的儲存機制和普通的快取不一樣,因此 session-mananger 模組本身並不依賴 j2cache ,而是重新實現了一個精簡版的 j2cache ,並針對 session 的機制進行了優化。一級快取使用 caffeine (expireAfterAccess),二級快取使用 redis (hash) ,基於 redis 的 pub/sub 進行訊息廣播,使用 fst 序列化器,而且無法修改。
目前該功能還處於 beta 測試階段,程式碼量非常少(模組原始碼 ),歡迎大家試用和挑毛病。
點贊是參與開源社群的基本禮儀,歡迎https://gitee.com/ld/J2Cache 點贊!