J2Cache 2.6.0 发布,支持分布式 session 存储管理

红薯
 红薯
发布于 2018年09月13日
收藏 5

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>

根据实际环境的情况对配置中的值进行调整,并确保该过滤器优先执行。完整示例请看 web.xml

由于 session 的存储机制和普通的缓存不一样,因此 session-mananger 模块本身并不依赖 j2cache ,而是重新实现了一个精简版的 j2cache ,并针对 session 的机制进行了优化。一级缓存使用 caffeine (expireAfterAccess),二级缓存使用 redis (hash) ,基于 redis 的 pub/sub 进行消息广播,使用 fst 序列化器,而且无法修改。

目前该功能还处于 beta 测试阶段,代码量非常少(模块源码),欢迎大家试用和挑毛病。

点赞是参与开源社区的基本礼仪,欢迎 https://gitee.com/ld/J2Cache 点赞!

本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 开源中国社区 [http://www.oschina.net]
本文标题:J2Cache 2.6.0 发布,支持分布式 session 存储管理
加载中

精彩评论

巴拉迪维
巴拉迪维
我操,新增 session 管理,老牛逼了。
黑牙菜菜
黑牙菜菜
在床上就搞的这个儿!!!!!

最新评论(29

tony.li
tony.li

引用来自“tony.li”的评论

@红薯 这个有java7的版本吗

引用来自“红薯”的评论

1.x 版本支持 java 1.7
1.x可以有session共享功能? 完全是被这个功能吸引过来的,另外这个项目源码 Gitee上还没有?刚才看了关于j2cache ,有个疑问,如果在不支持组播的环境上是用mq相互通知的?刚看到只有两种mq ,是否支持JMS API 这样可以兼容到支持JMS的其他MQ
红薯
红薯

引用来自“tony.li”的评论

@红薯 这个有java7的版本吗
1.x 版本支持 java 1.7
tony.li
tony.li
@红薯 这个有java7的版本吗
bboss
bboss

引用来自“淡漠悠然”的评论

把spring session整进去就不错了

引用来自“红薯”的评论

计划中
把bboss session也整一哈,老铁
s33ker
s33ker
ding
红薯
红薯

引用来自“johnlee007”的评论

这个分布式session存储管理和spring session由啥区别?
https://my.oschina.net/javayou/blog/1931381 请看这篇文字
johnlee007
johnlee007
这个分布式session存储管理和spring session由啥区别?
亓斌哥哥
亓斌哥哥
等待bug修复版本
m
mezongzi

引用来自“mezongzi”的评论

重复造轮子!

引用来自“红薯”的评论

你说错了,你给我找出一个一样的轮子来??

引用来自“mezongzi”的评论

redis不是已经可以做到了!

引用来自“红薯”的评论

所以我推荐你看看 https://my.oschina.net/javayou/blog/1931381 这篇博客,j2cache 不是要替换 redis ,是要让你更好的使用 redis 。
嗯嗯,好的
红薯
红薯

引用来自“tony.li”的评论

@红薯 j2cache 支持缓存key前缀吗?多个同构系统公用一套缓存系统,如果能根据缓存前缀区分出来就比较方便些。
当然支持啦
返回顶部
顶部