SpringBoot整合NoSql(二)——Redis远程连接ESC服务器实现session 共享

在这里插入图片描述
 在这样的架构中,会出现一些单服务中不存在的问题,例如客户端发起一个请求发到 Tomcat A 上,然后在 Tomcat A 上往 session 中保存了一份数据,下次又来一个请求,这个请求被转发到 Tomcat B 上,此时再去 Session 中获取数据,发现没有之前的数据。对于这一类问题的解决,思路很简单,就是将各个服务之间需要共享的数据,保存到一个公共的地方.

seesion共享:

使用Redis实现session共享原理如下,简单来说就是把session存到redis中去!多个服务器都能够通过Redis共享这个Session,因此我们在访问不同的服务器时,虽然不是原来拥有session服务器,但是我们仍然可以通过Redis共享的session进行成功的访问!

在这里插入图片描述

Spring Session作用

Spring Session 就是使用 Spring 中的代理过滤器,将所有的 Session 操作拦截下来,自动的将数据 同步到 Redis 中,或者自动的从 Redis 中读取数据。
对于开发者来说,所有关于 Session 同步的操作都是透明的,开发者使用 Spring Session,一旦配置完成后,具体的用法就像使用一个普通的 Session 一样。

为什么引入security?

spring 2.1.5开始,远程连接Redis必须引入Spring security,这里虽然仅仅在本地进行,但是后面远程连接服务器,仍会用到这个示例。

一、服务器相关配置和安装

1.开放8080端口&6379端口

方式一:在阿里云平台开放
 阿里云服务器ECS处于安全考虑默认自带安全组(仅开放了22号和3389号端口),Tomcat的默认端口号为8080,所以想使用Tomcat不开放8080端口是不行的。很多用户通过修改iptables来开放8080号端口,结果失败,这是由于安全组,对安全组,阿里云亘古不变的安全组开放端口问题。
如果不配置80端口会导致nginx欢迎界面无法返回!
参考链接:阿里云ECS云服务器如何开放8080端口?
在这里插入图片描述
方式二:使用防火墙开放
参考链接:CentOS7防火墙、端口开放常用命令

3.Redis安装配置

参考链接:Aliyun租了ESC服务器,第一件事我用它安装Redis

二、创建SpringBoot工程

选用依赖:

在这里插入图片描述

application.properties配置文件下面配置我们的Redis

spring.redis.host=121.40.83.80  #远程服务器ip
spring.redis.port=6379          #Redis默认端口
spring.redis.password=123456    #Redis密码
spring.redis.database=0         #Redis数据

server.port=8080

在这里插入图片描述
 如果对密码设置有疑问 参考链接:Aliyun租了ESC服务器,第一件事我用它安装Redis

写控制类接口

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;

public class TestController {
    @RestController
    public class HelloController {
        @Value("${server.port}")
        Integer port;
        @GetMapping("/set")
        public String set(HttpSession session) {
            session.setAttribute("user", "alvin");
            return String.valueOf(port);
        }
        @GetMapping("/get")
        public String get(HttpSession session) {
            return session.getAttribute("user") + ":" + port;
        }
    }
}

三、将项目打包成jar包并运行

1.将项目打包为jar包

在这里插入图片描述

2.分别在80808081端口执行jar

  • 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共享

3. 登陆验证

 首先测试8080端口
在这里插入图片描述
 因为加入了SpringSecurity因此需要输入密码
在这里插入图片描述
测试8081端口:
在这里插入图片描述
 不难发现,虽然8080和8081端口密码并不一致,但是此时,8081端口已经无需登录,就可以进入页面,说明已经实现了session共享!
 远程服务器Redis中也已经缓存了我们的session数据
在这里插入图片描述

参考链接
https://yq.aliyun.com/articles/701181
https://github.com/lenve/javaboy-code-samples
https://www.runoob.com/linux/nginx-install-setup.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Lukey Alvin

谢谢鼓励!越努力越幸运!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值