springsession redis session爆满处理
场景:
1. springsession配置了超时时间为24小时,cookie也配置了24小时;导致请求url后创建很多没有登录的session缓存,迟迟得不到释放;redis内存撑爆
方案:
1. springsession的超时时间为30分钟,cookie不设置超时时间(关闭浏览器失效)
2. 优化浏览器30分钟问题:前端每20分钟请求一次isLogin,使session的时间自动延长,达到不关闭浏览器session一直都在的目的
3. 其他乱七八糟程序请求,爬数据的session都会30分钟失效;使redis里面的session维持在较少状态
@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800)
public class SessionConfiguration {
@Bean
public CookieHttpSessionStrategy cookieHttpSessionStrategy() {
CookieHttpSessionStrategy strategy = new CookieHttpSessionStrategy();
DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();
cookieSerializer.setCookieName("JSESSIONID");
// cookieSerializer.setCookieMaxAge(99999);
cookieSerializer.setCookiePath("/");
cookieSerializer.setDomainNamePattern("^.+?\\.((\\w|\\-)+\\.(com|com.cn|tec|tech|cn|net.cn))$");
strategy.setCookieSerializer(cookieSerializer);
return strategy;
}
}