Spring Boot 使用 Redis 共享 Session 代码示例
参考资料
1. 新建 Maven 工程
我新建 spring-boot-session-redis maven 工程
2. 引入 POM 依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.4.12</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.4.12</version>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
<version>2.4.6</version>
</dependency>
3. 编写启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* spring boot 使用 redis 共享 session 示例
*
*/
@SpringBootApplication
public class SpringBootSessionApp
{
public static void main( String[] args )
{
SpringApplication.run(SpringBootSessionApp.class, args);
}
}
4. 编写Controller
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 测试 Controller
* @author black
* @date 2022-04-07 16:52:028
*/
@RestController
public class SessionController {
@Autowired
private Environment env;
/**
* 给 session 设置属性 name = black, port=当前应用端口
* @param session
* @return
*/
@GetMapping("/set")
public String setSession(HttpSession session) {
session.setAttribute("name", "black");
session.setAttribute("port", env.getProperty("server.port"));
return "success";
}
/**
* 获取 session 中 name 和 port 属性
* @param session
* @return
*/
@GetMapping("/get")
public String getSession(HttpSession session) {
return String.valueOf(session.getAttribute("name") + " is set by port:" + session.getAttribute("port"));
}
}
5. 添加src/main/resources/application.properties配置文件
# 端口号
server.port=8080
# redis 配置
spring.redis.host=127.0.01
spring.redis.port=6379
6. 验证
6.1 添加端口分别是8080和9090的2个启动配置
eclipse中打开SpringBootSessionApp.java启动类 ,点击右键-"Run As"-"Run Configurations",在弹出对话框选中"Java Application"点击右键-"New Configuration"添加2个配置,分别是: SpringBootSessionApp-8080 和 SpringBootSessionApp-9090.
其中,SpringBootSessionApp-8080 的 VM arguments 添加 "-Dserver.port=8080",SpringBootSessionApp-9090 的 VM arguments 添加"-Dserver.port=9090",如下图:


6.2 启动2个应用实例
启动 8080 端口实例
eclipse中打开SpringBootSessionApp.java启动类,,点击右键-"Run As"-"Java Application",选择 6.1 添加的 SpringBootSessionApp-8080启动配置,然后点击OK即可.启动 9090 端口实例
eclipse中打开SpringBootSessionApp.java启动类,,点击右键-"Run As"-"Java Application",选择 6.1 添加的 SpringBootSessionApp-9090启动配置,然后点击OK即可.
6.3 访问 8080 端口应用创建session

6.4 浏览器访问 9090 端口应用获取session内容

6.5 查看 Redis 是否存放了session信息

6.6 验证结束
Spring Boot 使用 Redis 共享 Session 代码示例的更多相关文章
- spring boot集成redis实现session共享
1.pom文件依赖 <!--spring boot 与redis应用基本环境配置 --> <dependency> <groupId>org.springframe ...
- 玩转spring boot——负载均衡与session共享
前言 当项目上线后,如果要修复bug或扩充功能,都需要重启tomcat服务.此时,正在使用应用的用户们就需要等待服务器的重启,而这就会造成不好的用户体验.还有,当仅仅只有一台tomcat服务时,如果 ...
- SpringBoot(三) :Spring boot 中 Redis 的使用
前言: 这一篇讲的是Spring Boot中Redis的运用,之前没有在项目中用过Redis,所以没有太大的感觉,以后可能需要回头再来仔细看看. 原文出处: 纯洁的微笑 SpringBoot对常用的数 ...
- Spring Boot 2.X(六):Spring Boot 集成Redis
Redis 简介 什么是 Redis Redis 是目前使用的非常广泛的免费开源内存数据库,是一个高性能的 key-value 数据库. Redis 与其他 key-value 缓存(如 Memcac ...
- 15套java架构师、集群、高可用、高可扩展、高性能、高并发、性能优化、Spring boot、Redis、ActiveMQ、Nginx、Mycat、Netty、Jvm大型分布式项目实战视频教程
* { font-family: "Microsoft YaHei" !important } h1 { color: #FF0 } 15套java架构师.集群.高可用.高可扩展. ...
- SpringBoot,Security4, redis共享session,分布式SESSION并发控制,同账号只能登录一次
由于集成了spring session ,redis 共享session,导致SpringSecurity单节点的session并发控制失效, springSession 号称 无缝整合httpses ...
- Spring Boot + Mybatis + Redis二级缓存开发指南
Spring Boot + Mybatis + Redis二级缓存开发指南 背景 Spring-Boot因其提供了各种开箱即用的插件,使得它成为了当今最为主流的Java Web开发框架之一.Mybat ...
- (35)Spring Boot集成Redis实现缓存机制【从零开始学Spring Boot】
[本文章是否对你有用以及是否有好的建议,请留言] 本文章牵涉到的技术点比较多:Spring Data JPA.Redis.Spring MVC,Spirng Cache,所以在看这篇文章的时候,需要对 ...
- 玩转spring boot——结合redis
一.准备工作 下载redis的windows版zip包:https://github.com/MSOpenTech/redis/releases 运行redis-server.exe程序 出现黑色窗口 ...
随机推荐
- 《Unity shader入门精要》复习<第13章 关于NDC坐标和深度/法线纹理>
分为三个地方讲解. NDC(Normalize Device Coordinates)归一化的设备坐标 NDC坐标是世界空间坐标通过MVP变换之后再进行归一化得到的坐标.只需要再一步变换就能得到屏幕空 ...
- 基于AE的基础的GIS系统的开发
一个GIS系统需要的基本功能的代码 一些基本的拖拽操作就不讲了,直接上代码吧. 1. 打开.mxd文件 基本思路:判断mxd路径存在→打开mxd文件 string filename = Appli ...
- 使用阿里巴巴开源镜像站镜像——Kubernetes 镜像
镜像下载.域名解析.时间同步请点击 阿里云开源镜像站 Kubernetes 镜像简介 Kubernetes 是一个开源系统,用于容器化应用的自动部署.扩缩和管理.它将构成应用的容器按逻辑单位进行分组以 ...
- kubernetes里kube-proxy的ConfigMap误删除处理
由于想要开启ipvs,没想到把cm当成pod删除了....然后就开始了修复之路 ConfigMap介绍 ConfigMap是一种API对象,用来将非加密数据保存到键值对中.可以用作环境变量.命令行参数 ...
- django之model,crm操作
一.字段 AutoField(Field) - int自增列,必须填入参数 primary_key=True BigAutoField(AutoField) - bigint自增列,必须填入参数 pr ...
- 7月2日 Django注册页面的form组件
forms.py里注册页面的form组件 # Create your views here. class RegForm(forms.Form): username = forms.CharField ...
- 关于Gradle 6.x及以上版本发布到仓库有很多CheckSum文件,想去除?
写在前边 今天写的这个博客和平时的博客有点区别,大多数都是告诉你解决问题的,而本文不完全是. 经常使用Gradle的都知道 Gradle有两个发布制品到Maven仓库的插件:maven 与 maven ...
- 记-beego项目调用Jenkins API获取job信息
type JenkinsController struct { beego.Controller } type Job struct { Name string `json:"name&qu ...
- Vue实例(1)
vue入门示例(一) herokang 2019-08-21 15:33:58 12696 收藏 44 分类专栏: 前端 文章标签: vue入门 版权 为了让广大后端人员更快的理解上手vue,我们 ...
- 面试官:知道ThreadLocal嘛?谈谈你对它的理解?(基于jdk1.8)
https://zhuanlan.zhihu.com/p/99150038 西北工业大学 计算机技术硕士在读 在java的多线程模块中,ThreadLocal是经常被提问到的一个知识点,提问的 ...