springboot实现session共享(redis中保存)
模拟测试:建立两个模块,一个保存session到redis中,一个从redis中获取session的value值
模块相同部分:
1.pom
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 引入springboot&redis整合场景 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- 引入springboot&springsession整合场景 --> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency>
2.yml
spring:
redis:
host: 127.0.0.1
session:
store-type: redis
server:
port: ? (此处为唯一不同地方,模块需要不同的port)
模块一: 保存session到redis
@RestController public class HelloHandler { @RequestMapping("/test/spring/session/save") public String testSession(HttpSession session) { session.setAttribute("king", "hello-king"); return "数据存入Session域!"; } }
测试数据如下: 可以看出数据已经保存到redis里面了
127.0.0.1:6379> keys * 1) "spring:session:expirations:159815802 2) "spring:session:sessions:expires:f67d 3) "spring:session:sessions:f67d16f2-851 127.0.0.1:6379> type spring:session:sess 0 hash 127.0.0.1:6379> hgetall spring:session:s 2320 1) "lastAccessedTime" 2) "\xac\xed\x00\x05sr\x00\x0ejava.lang. 01J\x00\x05valuexr\x00\x10java.lang.Numb 00\x00xp\x00\x00\x01t\x19\x88\x1d\xb6" 3) "maxInactiveInterval" 4) "\xac\xed\x00\x05sr\x00\x11java.lang. \x00\x01I\x00\x05valuexr\x00\x10java.lan \x02\x00\x00xp\x00\x00\a\b" 5) "sessionAttr:king" 6) "\xac\xed\x00\x05t\x00\nhello-king" 7) "creationTime" 8) "\xac\xed\x00\x05sr\x00\x0ejava.lang. 01J\x00\x05valuexr\x00\x10java.lang.Numb 00\x00xp\x00\x00\x01t\x19\x88\x1d\xb6"
模块二: 从redis获取session
@RestController public class HelloHandler { @RequestMapping("/test/spring/session/retrieve") public String testSession(HttpSession session) { String value = (String) session.getAttribute("king"); return value; } }
结果第一次报错:端口号不安全
更改后可以得到数据: