目录
官方文档,它是spring session项目的redis相关的一个子文档:https://docs.spring.io/spring-session/docs/2.0.0.BUILD-SNAPSHOT/reference/html5/guides/boot-redis.html
1、在spring boot的文档中,告诉我们添加@EnableRedisHttpSession来开启spring session支持,配置如下:
@Configuration @EnableRedisHttpSession public class RedisSessionConf { }
2、 @EnableRedisHttpSession注解是由spring-session-data-redis提供的,所以在pom.xml文件中添加:
<dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency>
3、application.properties配置
# 连接超时时间(毫秒) spring.redis.timeout= 3000 一定要加上不然会有问题
server.port=8080 #指定redis实现spring session spring.session.store-type=redis # Session 过期时间,单位s server.servlet.session.timeout = 600 spring.redis.host=192.168.43.116 spring.redis.port=6379 spring.redis.password= # 连接池最大连接数 spring.redis.jedis.pool.max-active=8 spring.redis.jedis.pool.max-wait=-1 # 连接池中的最大空闲连接 spring.redis.jedis.pool.max-idle=8 # 连接池中的最小空闲连接 spring.redis.jedis.pool.min-idle=0 # 连接超时时间(毫秒) spring.redis.timeout= 3000
4、对应controller
@RestController @RequestMapping(value = "/admin/v1") public class RedisSessionController { @GetMapping(value = "/first") public Map<String, Object> firstResp (HttpServletRequest request){ Map<String, Object> map = new HashMap<>(); request.getSession().setAttribute("requestUrl", request.getRequestURL()); map.put("requestUrl", request.getRequestURL()); return map; } @GetMapping(value = "/sessions") public Object sessions (HttpServletRequest request){ Map<String, Object> map = new HashMap<>(); map.put("sessionId", request.getSession().getId()); map.put("message", request.getSession().getAttribute("requestUrl")); return map; } }
第一次运行server-port设置为8080
运行完程序我们可以看到session 在redis已经存入
我们在把端口改为8081,运行完方法可以看到同样的session可以返回到页面
具体代码参考GitHub:https://github.com/FadeHub/spring-boot-learn/tree/master/spring-boot-redis-session