在分布式系统架构的系统中,我们如何保证session的一致性,其中之一的解决方式就是session共享形式,在SpringBoot框架中如何使用session达成共享呢,我们可以借助指定Redis实现存储管理。

一、pom中添加session-redis 依赖

此依赖不同于之前的redis依赖,pom依赖如下

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

二、application.properties 中指定session的存储类型

#session存储类型
spring.session.store-type=redis
#设置session超时时间
server.session.timeout=14400
spring.redis.host=127.0.0.1
spring.redis.port=6379

三、接口中使用

我们简单的写了一个模拟登陆 退出的接口,并写了一个查询session中的接口 接口类如下

com.demo.controller.UserController

package com.demo.controller;import javax.servlet.http.HttpSession;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;import com.demo.bean.User;@Controller
@RequestMapping(value="/user")
public class UserController {@ResponseBody@RequestMapping(value="/login",method=RequestMethod.GET)public User login(HttpSession session){User user = new User();user.setId("11111");user.setName("zhangsan");session.setAttribute("user", user);return user;}@ResponseBody@RequestMapping(value="/logout",method=RequestMethod.GET)public void logout(HttpSession session){session.invalidate();}@ResponseBody@RequestMapping(value="/getUserInfo",method=RequestMethod.GET)public User getUserInfo(HttpSession session){return  (User)session.getAttribute("user");}}

由于我们会将对象通过session存储在redis中,所以该对象必须序列化,故我们的User对象需要实现 java.io.Serializable 接口。

session.invalidate();可以清除session中的键值。

四、访问测试

我们访问登录接口http://127.0.0.1:8080/WebDemo/user/login 

然后我们访问查询接口http://127.0.0.1:8080/WebDemo/user/getUserInfo


接着我们在访问退出接口http://127.0.0.1:8080/WebDemo/user/logout

然后我们继续访问查询接口http://127.0.0.1:8080/WebDemo/user/getUserInfo

以及如果我们停掉服务器,在重启服务器后,访问session数据 依然可以获取到。

Spring boot - 使用redis实现session共享相关推荐

  1. spring boot 整合redis实现session共享

    目录 官方文档,它是spring session项目的redis相关的一个子文档:https://docs.spring.io/spring-session/docs/2.0.0.BUILD-SNAP ...

  2. Spring boot集成Redis实现sessions共享时,sessions过期时间问题分析

    Springboot鼓励零配置的方式,帮你做好大部分重复劳动的事,好到不能再好:具体的Redis安装方法和Springboot集成Redis方法,可以去搜索相关文章或参考该文章http://www.c ...

  3. Spring Session Redis实现Session共享

    Spring Session & Redis实现Session共享 前后端分离Session.单点登录实现 Session 共享简单方案,充当笔记 一.Session和Cookie 1.Ses ...

  4. 单点登录实现(spring session+redis完成session共享)

    一.前言 项目中用到的SSO,使用开源框架cas做的.简单的了解了一下cas,并学习了一下 单点登录的原理,有兴趣的同学也可以学习一下,写个demo玩一玩. 二.工程结构 我模拟了 sso的客户端和s ...

  5. SpringBoot整合Redis+Redis缓存应用+Redis实现Session共享+...

    一.SpringBoot整合Redis 1.导入依赖 <!--存在Redis依赖--> <dependency><groupId>org.springframewo ...

  6. Spring boot整合Redis(入门教程)

    目录 源码分析 jedis VS lettuce 整合测试 导入依赖 配置连接 测试 存入字符串 存入对象 五大数据类型操作 自定义RedisConfig 存入对象 Redis工具类(常用API) 以 ...

  7. Tomcat集群通过redis实现session共享

    Tomcat集群通过redis实现session共享 最近在XXX项目上做了tomcat集群的session共享,闲来无事鄙人将整个踩坑的过程粗糙的记录下来,给同学们分享一波,整个过程无硬编码,爽歪歪 ...

  8. Spring Boot 整合Redis 包含Java操作Redis哨兵 作者:哇塞大嘴好帥(哇塞大嘴好帅)

    Spring Boot 整合Redis 包含Java操作Redis哨兵 作者:哇塞大嘴好帥(哇塞大嘴好帅) 1. 配置环境 在SpringBoot2.0版本以后,原来使用的jedis被替换成为了let ...

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

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

最新文章

  1. SAP中的KANBAN
  2. 【错误记录】PyCharm 运行 Python 程序报错 ( SyntaxError: Non-ASCII character ‘\xe5‘ in file x.py on line 1, but )
  3. android.graphic.Path
  4. Android面试收集录4 Fragment详解
  5. 【BZOJ4196】【codevs4621】软件包管理器,树链剖分练习
  6. iOS setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key 问题
  7. Hadoop面试题总结
  8. 利用各向异性平滑图像
  9. 项目时间和本地时间差8小时的问题
  10. crt计算机显示器,crt显示器最高分辨率_crt显示器最高刷新率
  11. 访谈:腾讯高级交互设计师C7210的十年设计路(上)
  12. 靓仔的个人邮箱推荐——靓号邮箱!
  13. 有效学习的6个方法学习方法
  14. 【个人研究】21世纪西方运用脑电(EEG)的音乐研究动向分析(二)
  15. Java 年轻代、年老代、GC
  16. Relevance Vector Machine (RVM)简介
  17. 百度云怎么快速清理和谐文件啊
  18. 正点原子stm32F407学习笔记1——新建工程模板
  19. flex 的 三个参数:flex-grow、flex-shrink、flex-basis
  20. ddt python_python——DDT

热门文章

  1. 根据业务情况对数据校验
  2. Django项目调用外部程序soffice报错subprocess.CalledProcessError: Command 'soffice --headless --convert-to pdf
  3. Servlet 介绍
  4. SQL解析引擎Apache Calcite
  5. innerhtml修改对象内容后无法显示_javascript的DOM对象
  6. Vue——vue-resource
  7. java reader 方法_Java Reader reset()方法
  8. String实例化两种方式的区别
  9. 企业级工作流解决方案(十六)--工作流--工作流实体模型
  10. FTL(FreeMarker)基础