SpringBoot整合NoSql(一)——Redis本地连接实现Session共享
2020-03-17 18:41
716 查看
seesion共享:使用Redis实现session共享原理如下,简单来说就是把session存到redis中去!多个服务器都能够通过Redis共享这个Session,因此我们在访问不同的服务器时,虽然不是原来拥有session服务器,但是我们仍然可以通过Redis共享的session进行成功的访问!
为什么引入security?spring 2.1.5开始,远程连接Redis必须引入Spring security,这里虽然仅仅在本地进行,但是后面远程连接服务器,仍会用到这个示例。
一、Redis安装配置
二、Redis实现数据存储
关于SpringBoot中maven的相关配置推荐阅读:SpringBoot——IDEA配置maven
1.选用依赖:
2.application.properties
配置文件下面配置我们的Redis
spring.redis.host=127.0.0.1 #本地连接 spring.redis.port=6379 #Redis默认端口 spring.redis.password=123456 #Redis密码 spring.redis.database=0 #Redis数据
3.新建并编写TestRedisController
类
@RestController public class TestRedisController { @Autowired StringRedisTemplate stringRedisTemplate; @GetMapping("/set") public String set() { ValueOperations<String, String> ops = stringRedisTemplate.opsForValue(); ops.set("name","alvin"); return "set success"; } @GetMapping("/get") public String get() { ValueOperations<String, String> ops = stringRedisTemplate.opsForValue(); return ops.get("name"); } }
运行代码后,我们在网页分别访问
localhost:8080/set``````localhost:8080/get因为我们引入了SpringSecurity它会让我们登录,用户名默认为
user密码为日志下面的一串随机的密码
登陆后,就能进如set/ get/下的页面啦~
此时Redis已经成功的存储了数据
三、Redis实现Session共享
1.新建并编写SessionController
类
将原来的
TestRedisController删除,然后新建
SessionController,来测试session共享的实现
import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpSession; @Controller public class TestController { @Value("${server.port}") Integer port; @ResponseBody @RequestMapping("/set") public String set(HttpSession session) { session.setAttribute("user", "alvin"); return String.valueOf(port); } @ResponseBody @RequestMapping("/get") public String get(HttpSession session) { return session.getAttribute("user") + ":" + port; } }
2.将项目打包为jar
包
3.分别在8080
和8081
端口执行jar
包
执行之前我们先保证Redis还未缓存数据,所以先清除Redis中的数据
keys * #查看所有缓存数据 FLUSHALL #清除所有缓存数据
- 8080
cd target java -jar session-0.0.1-SNAPSHOT.jar
- 8081
cd target java -jar session-0.0.1-SNAPSHOT.jar server.port=8081
此时我们已经执行了两个seesion实例,这样我们可以通过登录来验证他们是否进行了session共享
三、登陆验证
首先测试
8080端口:
因为加入了SpringSecurity因此需要输入密码
测试
8081端口:
不难发现,虽然8080和8081端口密码并不一致,但是此时,8081端口已经无需登录,就可以进入页面,说明已经实现了session共享!
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- SpringBoot整合NoSql(二)——Redis远程连接ESC服务器实现session 共享
- springboot整合redis,实现session共享
- 【快学springboot】11.整合redis实现session共享
- Spring boot整合redis实现shiro的分布式session共享
- docker安装redis连接redis可视化工具Redis Desktop Manager+springboot项目使用Cache缓存+springboot项目整合 Redis 实现缓存
- spring boot + redis 实现session共享
- 使用springboot+redis实现session共享
- SpringBoot+redis 实现shiro集群,共享session。亲测可用
- SpringBoot2.x 整合Spring-Session实现Session共享
- Spring整合redis(jedis)实现Session共享的过程
- 使用springboot+redis实现session共享
- vue+axios+springboot+redis 实现session 共享
- 使用springboot+redis实现session共享
- 使用springboot+redis实现session共享
- Spring boot,Spring Seesion,redis实现登录验证及共享session及接口权限管理
- springboot利用springsession实现redis共享session,并且自定义sessionid
- Spring Boot系列(七)Spring Boot使用Redis实现session共享
- spring boot + redis 实现session共享
- 使用redis实现session共享(基于Spring Boot)
- Spring Boot分布式系统实践【扩展1】shiro+redis实现session共享、simplesession反序列化失败的问题定位及反思改进