J2Cache 2.6.0 版本發布啦,該版本最最值得關注的就是支持分布式的 session 存儲管理,支持不同的 Servlet 容器。
此外,該版本包含了如下小改動:
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>
根據實際環境的情況對配置中的值進行調整,並確保該過濾器優先執行。完整示例請看 web.xml
由於 session 的存儲機制和普通的緩存不一樣,因此 session-mananger 模塊本身並不依賴 j2cache ,而是重新實現了一個精簡版的 j2cache ,並針對 session 的機制進行了優化。一級緩存使用 caffeine (expireAfterAccess),二級緩存使用 redis (hash) ,基於 redis 的 pub/sub 進行消息廣播,使用 fst 序列化器,而且無法修改。
目前該功能還處於 beta 測試階段,代碼量非常少(模塊源碼),歡迎大家試用和挑毛病。
點讚是參與開源社區的基本禮儀,歡迎 https://gitee.com/ld/J2Cache 點讚!