本文旨在解决分布式系统的session如何共享问题,大致思路:session放入redis。其他解决方案:持久化、放cache等都可以,但是自从有了redis,这完全可以变的简简单单。
本文大致分两步:1、springboot中如何使用redis。2、redis如何解决session共享
1、pom依赖
2添加redis配置类
该配置类同样可以配置缓存失效时间等。
3配置redis服务
因为我连的是本地的(windows)测试机,密码默认为空,根据自己的情况配置即可。
4单元测试
1、set值(字符串)
往redis放一个key为test001、value为test001的值,然后查看redis
2、set值(object)
往redis分别放key为user1和user2的对象,user2设置5秒失效,线程等待6秒再完成,期望结果:redis中有user1,没有user2,bingo!!!
5解决session共享
使用spring-session-data-redis实现session共享,pom中引入该依赖(上文已添加),添加SessionConfig配置类
对,没看错,只需要这个就够了。最长有效时间根据自己情况随意配置即可。
6测试
写一个简单Controller,如下
这里可以看到sessionId:
看redis中
可以看到失效时间,sessionId等
7共享session
另外找一个机器,照着这个配置再来一遍,自动启用session共享,因为sessionId都存在了同一个redis中。奏是这么简单。挽起袖子开始干吧。