官方文档,它是spring session项目的redis相关的一个子文档:https://docs.spring.io/spring-session/docs/2.0.0.BUILD-SNAPSHOT/reference/html5/guides/boot-redis.html

在spring boot的文档中,告诉我们添加@EnableRedisHttpSession来开启spring session支持,配置如下:

@Configuration
@EnableRedisHttpSession
public class RedisSessionConfig {
} 

而@EnableRedisHttpSession这个注解是由spring-session-data-redis提供的,所以在pom.xml文件中添加:

<dependency>  <groupId>org.springframework.boot</groupId>  <artifactId>spring-boot-starter-redis</artifactId>
</dependency>
<dependency>  <groupId>org.springframework.session</groupId>  <artifactId>spring-session-data-redis</artifactId>
</dependency>  

在配置文件application.properties里配置spring session

spring.session.store-type=redis #指定redis实现spring session
server.session.timeout=600 # Session 过期时间,单位s
spring.session.redis.flush-mode= # Sessions 刷新模式
spring.session.redis.namespace= # Namespace for keys used to store sessions.

配置redis连接信息

spring.redis.host=localhost
spring.redis.password=secret
spring.redis.port=6379

加上端口号

server.port=8080

定义一个Controller

@RestController
@RequestMapping(value = "/admin/v1")
public class QuickRun {  @RequestMapping(value = "/first", method = RequestMethod.GET)  public Map<String, Object> firstResp (HttpServletRequest request){  Map<String, Object> map = new HashMap<>();  request.getSession().setAttribute("request Url", request.getRequestURL());  map.put("request Url", request.getRequestURL());  return map;  }  @RequestMapping(value = "/sessions", method = RequestMethod.GET)  public Object sessions (HttpServletRequest request){  Map<String, Object> map = new HashMap<>();  map.put("sessionId", request.getSession().getId());  map.put("message", request.getSession().getAttribute("map"));  return map;  }
}  

复制上面的工程,把port改为9090

两个项目都启动好

首先访问8080端口的设置session

{"request Url":"http://localhost:8080/admin/v1/first"}  

接着,我们访问8080端口的sessions,返回:

{"sessionId":"efcc85c0-9ad2-49a6-a38f-9004403776b5","message":"http://localhost:8080/admin/v1/first"} 

最后,再访问9090端口的sessions,返回:

{"sessionId":"efcc85c0-9ad2-49a6-a38f-9004403776b5","message":"http://localhost:8080/admin/v1/first"} 

可见,8080与9090两个服务器返回结果一样,实现了session的共享

如果此时再访问9090端口的first的话,首先返回:

{"request Url":"http://localhost:9090/admin/v1/first"}  

而两个服务器的sessions都是返回:

{"sessionId":"efcc85c0-9ad2-49a6-a38f-9004403776b5","message":"http://localhost:9090/admin/v1/first"} 

这个时候打开redis客户端,可以查询到session信息已经保存在redis里。

注意点:

1.Redis版本要在2.8+

转载于:https://www.cnblogs.com/heyy520/p/9899279.html

springboot+redis实现分布式session共享相关推荐

  1. Spring Session + Redis实现分布式Session共享

    2019独角兽企业重金招聘Python工程师标准>>> 通常情况下,Tomcat.Jetty等Servlet容器,会默认将Session保存在内存中.如果是单个服务器实例的应用,将S ...

  2. java分布式会话redis_详解springboot中redis的使用和分布式session共享问题

    对于分布式使用Nginx+Tomcat实现负载均衡,最常用的均衡算法有IP_Hash.轮训.根据权重.随机等.不管对于哪一种负载均衡算法,由于Nginx对不同的请求分发到某一个Tomcat,Tomca ...

  3. Spring Boot(十一)Redis集成从Docker安装到分布式Session共享

    2019独角兽企业重金招聘Python工程师标准>>> 一.简介 Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并 ...

  4. 170222、使用Spring Session和Redis解决分布式Session跨域共享问题

    使用Spring Session和Redis解决分布式Session跨域共享问题 原创 2017-02-27 徐刘根 Java后端技术 前言 对于分布式使用Nginx+Tomcat实现负载均衡,最常用 ...

  5. java redis实现session共享_redis实现分布式session共享

    在讲解redis分布式session共享之前,我们先聊聊tomcat中session管理机制,包括:请求过程中session操作,sessionid解析过程,servlet获取session流程,以及 ...

  6. 场景应用:利用Redis实现分布式Session

    文章目录 原理:Redis实现分布式Session web开发session 分布式session同步问题 分布式session解决方案 实战:Redis实现分布式Session 技术栈:Spring ...

  7. Springboot整合springsession实现session共享

    Springboot整合springsession实现session共享 简介 session我们之前有介绍过(可见springboot整合springsecurity),简单来说就是将用户信息或者数 ...

  8. 分布式Session共享和单点登录实现

    文章目录 基于Session的身份认证 简介 实现 分布式Session共享 简介 实现 单点登陆 简介 实现过程 总结 基于Session的身份认证 简介 对于一个Web应用,客户端每次请求时,服务 ...

  9. 分布式Session共享的4类技术方案,与优劣势比较

    分布式Session共享的4类技术方案,与优劣势比较 什么是session 什么是session一致性问题? 分布式session Session一致性解决方案 1.什么是session 服务器为每个 ...

最新文章

  1. ${pageContext.request.contextPath}无效
  2. C语言判断一个数是否是回文数
  3. Navicat for SQL Server(SQLServer数据库管理)
  4. 道家遁甲式(又名道家奇门)
  5. ubuntu 16gcc g++版本降级
  6. 【笔记】iOS开发基础笔记二
  7. Bootstrap3代码模板
  8. 网络安全:教你五招服务器安全维护技巧
  9. JAVA常见异常解析
  10. 面试官问你的缺点是什么,应该如何回答?
  11. 实验8 OpenGL太阳系动画
  12. chessbase(ChessBase Mega)
  13. 客服坐席聊天页面html,WebSocket实现简单客服聊天系统
  14. 笔记本电脑开机没画面/黑屏没反应怎么办?
  15. github官网老是打不开
  16. 【HTML+CSS】字体字号行高
  17. 3. Unity之三维模型
  18. //数据结构:先序、中序、后序遍历二叉树。输入数据:abd##eg###c#f#h##
  19. VMware安装后界面显示为英文
  20. 深度学习_深度学习基础知识_TTA(测试时增强)

热门文章

  1. 5g空分复用技术_5G十大关键技术之三的空分复用
  2. java bootclasspath
  3. 最强的游戏计算机,这可能是市面上体积最小性能最强的游戏主机了
  4. android o测试版,一加手机可升级!谷歌已正式推送Android O测试版系统
  5. linux uboot nfs启动,uboot中利用TFTP和NFS加载镜像到ram运行
  6. aix卸载java,AIX系统学习之--卸载软件错误
  7. java 输出全年日期_Java 输出某一年所有的日期
  8. mysql 语句性能分析_mysql的sql语句的性能诊断分析
  9. matlab parfor不能用,matlab中parfor函数
  10. datagrid wpf 刷新数据_c# – WPF Datagrid-自动刷新