spring boot+redis+spring session+Nginx实现负载均衡下session共享

本文介绍了如何利用SpringSession和Redis实现在多个SpringBoot应用间的Session共享。通过引入相关依赖,配置Redis连接,并设置不同应用的端口,实现了数据在不同应用间的同步。此外,还展示了在Controller中进行Session操作的示例代码。
摘要由CSDN通过智能技术生成

简化的方案就是通过spring session来实现。spring session会将所有的session操作拦截下来,自动将数据同步到redis,或者从redis中读取。实际操作如下。

前提:安装redis、安装Nginx

  1. 首先引入依赖(我是直接在之前的一个spring boot的demo中测试的中间有些代码是没必要的 所以这里我只贴一些关于本次测试的代码)
  <!--redis 配置-->
	<dependency>
	    <groupId>org.springframework.boot</groupId>
	    <artifactId>spring-boot-starter-data-redis</artifactId>
	</dependency>
	<!--redis session 共享-->
	<dependency>
	    <groupId>org.springframework.session</groupId>
	    <artifactId>spring-session-data-redis</artifactId>
	</dependency>
  1. application.yml添加redis配置
spring:
  redis:
       database: 0
 # Redis服务器地址
       host: 127.0.0.1
 # Redis服务器连接端口
       port: 6379  
 # Redis服务器连接密码(默认为空)
       password:  
 # 连接池最大连接数(使用负值表示没有限制)
       pool: 
         max-active: 8  
 # 连接池最大阻塞等待时间(使用负值表示没有限制)
         max-wait: -1  
 # 连接池中的最大空闲连接
         max-idle: 8  
 # 连接池中的最小空闲连接
         min-idle: 0  
       cluster:
         max-redirects: 10
         nodes: 127.0.0.1:6080
 # 连接超时时间(毫秒)
       timeout: 2000
  1. 例如我的项目名为demo1,直接复制一版demo2更改一下端口号,我的是一个为8080一个为8081,具体如下图
server:
  port: 8080
  servlet:
    session:
      timeout: 86400
    context-path: /
server:
  port: 8081
  servlet:
    session:
      timeout: 86400
    context-path: /
  1. CommonResult用作模版用于前后台连调
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CommonResult<T>{
	private Integer code;    
	private String message;    
	private T data;    
	public CommonResult(Integer code, String message){
		this(code,message,null);    
	}
}
  1. controller1中测试代码
@RestController
@RequestMapping("/ipa")
public class TestController {

    @Value("${server.port}")
    private String port;

    @RequestMapping(value = "/set", produces = "application/json;charset=utf-8")
    public CommonResult setName(HttpSession session){
        session.setAttribute("names","one");
        return new CommonResult(200,"成功",port);
    }
    @RequestMapping(value = "/get", produces = "application/json;charset=utf-8")
    @CrossOrigin
    public CommonResult getName(HttpSession session){
        String name=(String) session.getAttribute("names");
        return new CommonResult(200,"成功",port+"端口,"+name);
    }
}
  1. 配置Nginx安装目录下conf下的nginx.conf
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

熬菜

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值