下是针对 RedisSessionManager 的 Tomcat context.xml 配置示例,覆盖基础单机 Redis、带密码 / 指定库、Redis 哨兵集群、自定义序列化 / 持久化策略 等常见场景
核心说明
配置中所有
className 需指向实际的 RedisSessionManager 全类名(示例中为 reyo.redis.session.manager.tomcat9.RedisSessionManager),Valve 需配置 RedisSessionHandlerValve 用于请求后会话持久化。示例 1:基础单机 Redis 配置(最简版)
适配本地默认 Redis(localhost:6379,无密码,db=0):
示例 2:单机 Redis(带密码 / 自定义超时 / 指定 DB)
适配生产环境单机 Redis(指定密码、超时时间、数据库):
示例 3:Redis 哨兵集群配置(高可用)
适配 Redis 哨兵模式(主从 + 哨兵),需指定哨兵主节点名和哨兵列表:
示例 4:自定义序列化策略 + 多持久化策略
指定自定义序列化类(替代默认
JavaSerializer),并组合持久化策略:注:自定义serializationStrategyClass需实现reyo.redis.session.manager.tomcat9.Serializer接口。
示例 5:完整生产级配置(含 JVM 路由 / 会话超时)
适配分布式 Tomcat 集群(指定 JVM Route,配合负载均衡):
关键配置参数说明
表格
| 参数名 | 作用 |
|---|---|
host |
Redis 单机地址(哨兵模式下无需配置) |
port |
Redis 端口(默认 6379) |
password |
Redis 认证密码(无则不配置) |
database |
Redis 数据库编号(默认 0) |
timeout |
Redis 连接超时时间(毫秒,默认 Protocol.DEFAULT_TIMEOUT=2000) |
sentinelMaster |
Redis 哨兵主节点名称(哨兵模式必填) |
sentinels |
哨兵节点列表,逗号分隔(如:ip1:port1,ip2:port2) |
serializationStrategyClass |
序列化实现类全类名(默认 JavaSerializer) |
sessionPersistPolicies |
会话持久化策略:
|
jvmRoute |
Tomcat 集群节点标识(会话 ID 后缀,避免集群会话冲突) |
注意事项
- 需确保 Redis 客户端依赖(jedis)已放入 Tomcat 的
lib目录; RedisSessionHandlerValve必须配置,否则请求结束后会话无法持久化到 Redis;- 哨兵模式下,
host/port配置会被忽略,以sentinelMaster/sentinels为准; - 自定义序列化类需保证可序列化 / 反序列化 Tomcat 会话对象,避免类加载异常
浙公网安备 33010602011771号