What is the default session timeout and how to configure it when using the Spring Session with Redis as the backend?

redis, session-timeout, spring-session

Solution

The easiest way to configure session timeout when using redis repository is

@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 60)

OR @EnableRedissonHttpSession(maxInactiveIntervalInSeconds = 1200) if redisson dependency is there.

The session expires when it is no longer available in the repository. Timeout can be configured with `setDefaultMaxInactiveInterval(int)` on both `RedisOperationsSessionRepository` and `MapSessionRepository`. Default value is 30 minutes.

If you are using spring boot, then as of version 1.3 it will automatically sync the value with the `server.session.timeout` property from the application configuration.

Note that one of the shortcomings when using spring session is that `javax.servlet.http.HttpSessionListener`s are not invoked.

If you need to react on session expiration events you can subscribe to `SessionDestroyedEvent` application event of your spring application.

Problem

My application currently use Spring Session together with Redis as the backend. I searched into the official documentation for Spring Session but was not able to find what the default session timeout is when using that module. Also I am not sure how to change that default timeout if necessary. Can someone please advise?

Original source