【快学springboot】11.整合redis实现session共享
前言
这里都是基于前面的项目基础上的。springboot整合redis非常的方便,这也是springboot的宗旨,简化配置。这篇文章就教大家如何使用springboot整合redis来实现session共享。
引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
配置redis
在application.properties中配置redis
# Redis服务器地址
spring.redis.host=localhost
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=
因为我本地redis没有设置密码,所以密码这里留空。这个配置项可以去掉,但是我留在这是是想告诉大家可以在这里配置redis密码
实现session共享
其实springboot实现session共享非常的方便,只需要一个@EnableRedisHttpSession注解即可。把该注解加在springboot启动类的上面。
到这里,已经实现redis存储session的功能了。下面通过一个简单例子测试下session是否存储在redis中了。
新建一个SessionController.java,并且写一个设置session的方法,如下:
启动项目,通过postman调用,如下:
通过redis可视化工具,查看redis中是否存在该属性:
通过查看,happyjava已经存在redis中了。
使用nginx测试
通过上面的例子,已经证明了session被redis存储了,下面,我们通过把应用启动在两个端口,使用nginx转发,测试session是否真的共享了。
nginx.config配置
upstream session_server {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://session_server;
proxy_set_header Host $host;
}
}
这里把localhost这个请求,转发到了本地的8080和8081端口。
通过server.port指定程序的端口号
application.properties
server.port=8081
写一个获取session的方法
SessionController.java
这里通过Value注解获取了配置文件的server.port属性,并且通过getSession方法返回。
把程序启动在两个端口
IDEA设置可以多次启动同个main方法。
把Allow paralled run勾上,即可多次启动一个main方法了。我们先把server.port设置为8080启动一次,然后改为8081再次启动。
通过postman多次调用,可以获得结果如下:
可以看到,port分别出现了8080和8081,并且都能够正常获取到之前设置的happyjava这个值,说明session共享已经配置成功了。
总结
springboot配置session共享是非常方便的,只需要EnableRedisHttpSession注解即可。其实也可以使用EnableMongoHttpSession注解用MongoDB来管理session。
【快学springboot】11.整合redis实现session共享的更多相关文章
- 【快学springboot】13.操作redis之String数据结构
前言 在之前的文章中,讲解了使用redis解决集群环境session共享的问题[快学springboot]11.整合redis实现session共享,这里已经引入了redis相关的依赖,并且通过spr ...
- 【快学SpringBoot】Spring Cache+Redis实现高可用缓存解决方案
前言 之前已经写过一篇文章介绍SpringBoot整合Spring Cache,SpringBoot默认使用的是ConcurrentMapCacheManager,在实际项目中,我们需要一个高可用的. ...
- 基于SpringBoot+Redis的Session共享与单点登录
title: 基于SpringBoot+Redis的Session共享与单点登录 date: 2019-07-23 02:55:52 categories: 架构 author: mrzhou tag ...
- 【快学springboot】12.实现拦截器
前言 之前在[快学springboot]6.WebMvcConfigurer配置静态资源和解决跨域里有用到WebMvcConfigurer接口来实现静态资源的映射和解决跨域请求,并且在文末还说了Web ...
- 【快学springboot】8.JPA乐观锁OptimisticLocking
介绍 当涉及到企业应用程序时,正确地管理对数据库的并发访问是至关重要的.为此,我们可以使用Java Persistence API提供的乐观锁定机制.它导致在同一时间对同一数据进行多次更新不会相互干扰 ...
- 【快学springboot】4.接口参数校验
前言 在开发接口的时候,参数校验是必不可少的.参数的类型,长度等规则,在开发初期都应该由产品经理或者技术负责人等来约定.如果不对入参做校验,很有可能会因为一些不合法的参数而导致系统出现异常. 上一篇文 ...
- SpringBoot简单整合redis
Jedis和Lettuce Lettuce 和 Jedis 的定位都是Redis的client,所以他们当然可以直接连接redis server. Jedis在实现上是直接连接的redis serve ...
- SpringBoot中整合Redis、Ehcache使用配置切换 并且整合到Shiro中
在SpringBoot中Shiro缓存使用Redis.Ehcache实现的两种方式实例 SpringBoot 中配置redis作为session 缓存器. 让shiro引用 本文是建立在你是使用这sh ...
- SpringBoot2.x 整合Spring-Session实现Session共享
SpringBoot2.x 整合Spring-Session实现Session共享 1.前言 发展至今,已经很少还存在单服务的应用架构,不说都使用分布式架构部署, 至少也是多点高可用服务.在多个服务器 ...
随机推荐
- 【PAT甲级】1101 Quick Sort (25 分)
题意: 输入一个正整数N(<=1e5),接着输入一行N个各不相同的正整数.输出可以作为快速排序枢纽点的个数并升序输出这些点的值. trick: 测试点2格式错误原因:当答案为0时,需要换行两次
- eclipse配置tomcat后修改server.xml文件(如编码等)无效问题
我们用eclipse配置好tomcat后,在处理中文乱码或是配置数据源时,我们要修改Tomcat下的server.xml等文件. 修改后重启Tomcat服务器时发现xml文件又被还原了. 因为Tomc ...
- ASP.NET Core搭建多层网站架构【15-扩展之使用Obfuscar混淆加密保护代码】
2020/02/03, ASP.NET Core 3.1, VS2019, Obfuscar 2.2.25 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[15-扩展之使 ...
- MySQL - Schema和Database的区别
问题来源 在pycharm发现Create new schema的效果和新建数据库一样,所以产生这个问题 参考 https://stackoverflow.com/questions/11618277 ...
- 测试环境docker-swarm安装部署
测试环境swarm安装部署 部署前增加监听docker2375端口 centos 增加tcp监听端口 修改/lib/systemd/system/docker.service sed -i ‘s/Ex ...
- spark实验(三)--Spark和Hadoop的安装(1)
一.实验目的 (1)掌握在 Linux 虚拟机中安装 Hadoop 和 Spark 的方法: (2)熟悉 HDFS 的基本使用方法: (3)掌握使用 Spark 访问本地文件和 HDFS 文件的方法. ...
- WinForm开发(3)——使用vs2017打包winform安装程序的过程
一.安装打包插件 注:安装好重启vs2017 二.打包过程 添加文件入口
- 模块学习-json pickle
json json序列化 import json def sayhi(name): print("hello",name) info = { 'name':'mogu', 'age ...
- JavaScript 对象数字键特性实现桶排序
桶排序: 对象中,数字键按照升序排列.依据这一特性将数组的值作为对象的键和值存入对象实现排序 因为对象的键不重复,因此不支持数组有重复元素存在的排序场景,也可以看作是实现数组的去重排序 functio ...
- MYSQL---外键 primary key 作用
https://www.cnblogs.com/x739400043/p/4732158.html 外键和级联 关于外键写的不错的网址:http://blog.csdn.net/lidaasky/ ...