Redis Session Manager for Tomcat 8
==================================
Tomcat 8 / Java 8 session manager to store sessions in Redis.
Goals
-----
* Ability to use different Java Redis clients (defaults to a Redisson) with client-specific serializers (default to standard java serialization)
* Session save configuration to allow persistence [after a request|when an attribute changes]
* Ignore certain requests (e.g. for static resources)
Usage
-----
* Copy `redis-session-manager-with-dependencies-VERSION.jar` to tomcat/lib
* Default configuration: (communicates with redis on localhost:6379)
```
<Manager className="com.crimsonhexagon.rsm.redisson.SingleServerSessionManager" />
```
* Full configuration (showing default values):
```
<Manager className="com.crimsonhexagon.rsm.redisson.SingleServerSessionManager"
endpoint="localhost:6379"
sessionKeyPrefix="_rsm_"
saveOnChange="false"
forceSaveAfterRequest="false"
dirtyOnMutation="false"
ignorePattern=".*\\.(ico|png|gif|jpg|jpeg|swf|css|js)$"
connectionPoolSize="100"
database="0"
password="<null>"
timeout="60000"
pingTimeout="1000"
retryAttempts="20"
retryInterval="1000"
/>
```
* _endpoint_: hostname:port of the redis server. Must be a primary endpoint (read/write) and not a read replicate (read-only).
* _sessionKeyPrefix_: prefix for redis keys. Useful for situations where 1 redis cluster serves multiple application clusters with potentially conflicting session IDs.
* _saveOnChange_: if _true_, the session will be persisted to redis immediately when any attribute is modified. When _false_, a modified session is persisted to redis when the request is complete.
* _forceSaveAfterRequest_: if _true_, the session will be persisted to redis when the request completes regardless of whether the session has detected a change to its state.
* _ignorePattern_: Java Pattern String to be matched against the request URI (_does not include the query string_). If matched, the request will not be processed by the redis session manager.
AWS ElastiCache usage
-----
Version 2.0.0 added additional support for ElastiCache Replication Groups. Applicable configuration:
```
<Manager className="com.crimsonhexagon.rsm.redisson.ElasticacheSessionManager"
nodes="node1.cache.amazonaws.com:6379 node2.cache.amazonaws.com:6379 ..."
nodePollInterval="1000"
sessionKeyPrefix="_rsm_"
saveOnChange="false"
forceSaveAfterRequest="false"
dirtyOnMutation="false"
ignorePattern=".*\\.(ico|png|gif|jpg|jpeg|swf|css|js)$"
masterConnectionPoolSize="100"
slaveConnectionPoolSize="100"
database="0"
password="<null>"
timeout="60000"
pingTimeout="1000"
retryAttempts="20"
retryInterval="1000"
/>
```
_nodes_ is a space-separated list of all nodes in the replication group. There is no default value; failure to specify this will result in a failure to start.
_nodePollInterval_ is the interval for polling each node in the group to determine if it is the master or a slave.
Notes on object mutation
-----
* TL;DR: avoid mutation of objects pulled from the session. If you must do this, read on.
* Changes made directly to an object in the session without mutating the session will not be persisted to redis. E.g. `session.getAttribute("anObject").setFoo("bar")` will not result in the session being marked dirty. _forceSaveAfterRequest_ can be used as a workaround, but this is inefficient. A dirty workaround would be to mark the session as dirty by `session.removeAttribute("nonExistentKey")`
* It is possible for an object to be mutated and `session.setAttribute("anObject")` invoked without the session being marked as dirty due to the session object and mutated object being references to the same actual object. _dirtyOnMutation_ will mark the session as dirty whenever `setAttribute()` is invoked. This is generally safe but is disabled by default to avoid unnecessary persists.
redis-session-manager-redis-session-manager-2.1.0.zip
需积分: 0 188 浏览量
更新于2024-06-02
收藏 28KB ZIP 举报
Redis Session Manager是一款基于Redis数据库实现的会话管理工具,它主要负责存储和管理Web应用程序中的用户会话数据。Redis作为一款高性能的键值存储系统,因其内存存储特性、丰富的数据结构以及优秀的网络I/O性能,常被用作会话持久化存储的首选。在本压缩包"redis-session-manager-redis-session-manager-2.1.0.zip"中,包含的主要是这个工具的2.1.0版本。
Redis Session Manager的主要功能包括:
1. **会话持久化**:通过将Web应用中的session数据存入Redis,即使服务器重启或负载均衡下,用户的会话状态也能保持连续性,提高用户体验。
2. **高可用性**:Redis支持主从复制和哨兵(Sentinel)监控,能确保在单点故障时快速切换到备份节点,保证服务不间断。
3. **性能优化**:利用Redis的内存存储特性,session数据读写速度极快,适合处理高并发场景。
4. **数据过期策略**:可以设置session的生命周期,当session超时未更新时,Redis会自动删除该session,避免内存占用过多。
5. **分布式支持**:在分布式Web应用环境中,Redis Session Manager可以跨服务器共享session,实现用户会话的无缝迁移。
关于Redis本身,它是一个开源的、支持网络、基于内存的数据结构存储系统,可以当作数据库、缓存和消息中间件。它的数据类型包括字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)和有序集合(Sorted Sets),这些丰富的数据结构使得Redis在很多场景下有独特的优势。
在Windows环境下,Redis通常需要通过安装程序来部署。本压缩包可能包含了适用于Windows系统的Redis Session Manager安装或配置文件,以便于在Windows平台进行部署和配置。
使用Redis Session Manager时,开发者需要注意以下几点:
1. **配置连接**:设置Redis服务器的地址、端口、密码等信息,确保Web应用能够正确连接到Redis实例。
2. **序列化与反序列化**:由于Redis接收的是字节数据,因此需要对session对象进行序列化和反序列化操作,可以选择合适的序列化库如JSON或protobuf。
3. **安全性**:考虑到数据安全,需要为Redis设置访问权限,限制非授权的客户端访问。
4. **监控与维护**:定期检查Redis的内存使用情况,避免内存耗尽。同时,使用Redis自带的监控工具或第三方监控系统,监控Redis的运行状态和性能指标。
Redis Session Manager 2.1.0版提供了一种高效、可靠的会话管理解决方案,通过结合Redis的优秀特性,可以在多种应用场景下保证用户会话的稳定性和高性能。在Windows系统中部署和使用这款工具,需要理解Redis的基础知识,并按照特定的配置步骤进行操作。

段子手-168
- 粉丝: 5170
最新资源
- 基于ROS的TEB局部路径规划算法仿真包_包含Stage和Gazebo双仿真环境下的TEB算法实现_支持阿克曼转向模型与差速底盘运动学验证_提供完整仿真场景与可视化工具_用于移动机.zip
- 微信小程序商城,微信小程序微店.zip
- 使用Python实现磁场定向控制算法的仿真模拟项目_磁场定向控制FOC_电机驱动_无刷直流电机BLDC_永磁同步电机PMSM_空间矢量调制SVPWM_Clarke变换_Park变换.zip
- 微信小程序日历.zip
- 微信小程序 & 个人博客 & WordPress & WordPress REST API.zip
- 垃圾分类微信小程序.zip
- 微信小程序解密并反编译.zip
- 微信小程序--我来投票.zip
- 淘宝客项目,支持App,微信小程序,QQ小程序(1).zip
- 商城、商店批发或零售,pc管理端 + 微信小程序 + 后端服务.zip
- 微慕小程序开源版-WordPress版微信小程序.zip
- wxSearch-微信小程序优雅的搜索框.zip
- 微信小程序实现watch监听.zip
- 微信小程序中的股票分时图、K线图.zip
- 咩咩单词:简易背单词的微信小程序.zip
- 针对微信小程序使用的protoBuffer库.zip