spring boot 整合redis实现session共享

官方文档,它是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:

经验分享 程序员 微信小程序 职场和发展