springsession redis session爆满处理

2020年5月13日 作者 kee

场景:

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;
    }

}