Spring boot - 使用redis实现session共享
在分布式系统架构的系统中,我们如何保证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共享相关推荐
- spring boot 整合redis实现session共享
目录 官方文档,它是spring session项目的redis相关的一个子文档:https://docs.spring.io/spring-session/docs/2.0.0.BUILD-SNAP ...
- Spring boot集成Redis实现sessions共享时,sessions过期时间问题分析
Springboot鼓励零配置的方式,帮你做好大部分重复劳动的事,好到不能再好:具体的Redis安装方法和Springboot集成Redis方法,可以去搜索相关文章或参考该文章http://www.c ...
- Spring Session Redis实现Session共享
Spring Session & Redis实现Session共享 前后端分离Session.单点登录实现 Session 共享简单方案,充当笔记 一.Session和Cookie 1.Ses ...
- 单点登录实现(spring session+redis完成session共享)
一.前言 项目中用到的SSO,使用开源框架cas做的.简单的了解了一下cas,并学习了一下 单点登录的原理,有兴趣的同学也可以学习一下,写个demo玩一玩. 二.工程结构 我模拟了 sso的客户端和s ...
- SpringBoot整合Redis+Redis缓存应用+Redis实现Session共享+...
一.SpringBoot整合Redis 1.导入依赖 <!--存在Redis依赖--> <dependency><groupId>org.springframewo ...
- Spring boot整合Redis(入门教程)
目录 源码分析 jedis VS lettuce 整合测试 导入依赖 配置连接 测试 存入字符串 存入对象 五大数据类型操作 自定义RedisConfig 存入对象 Redis工具类(常用API) 以 ...
- Tomcat集群通过redis实现session共享
Tomcat集群通过redis实现session共享 最近在XXX项目上做了tomcat集群的session共享,闲来无事鄙人将整个踩坑的过程粗糙的记录下来,给同学们分享一波,整个过程无硬编码,爽歪歪 ...
- Spring Boot 整合Redis 包含Java操作Redis哨兵 作者:哇塞大嘴好帥(哇塞大嘴好帅)
Spring Boot 整合Redis 包含Java操作Redis哨兵 作者:哇塞大嘴好帥(哇塞大嘴好帅) 1. 配置环境 在SpringBoot2.0版本以后,原来使用的jedis被替换成为了let ...
- java redis实现session共享_redis实现分布式session共享
在讲解redis分布式session共享之前,我们先聊聊tomcat中session管理机制,包括:请求过程中session操作,sessionid解析过程,servlet获取session流程,以及 ...
最新文章
- SAP中的KANBAN
- 【错误记录】PyCharm 运行 Python 程序报错 ( SyntaxError: Non-ASCII character ‘\xe5‘ in file x.py on line 1, but )
- android.graphic.Path
- Android面试收集录4 Fragment详解
- 【BZOJ4196】【codevs4621】软件包管理器,树链剖分练习
- iOS setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key 问题
- Hadoop面试题总结
- 利用各向异性平滑图像
- 项目时间和本地时间差8小时的问题
- crt计算机显示器,crt显示器最高分辨率_crt显示器最高刷新率
- 访谈:腾讯高级交互设计师C7210的十年设计路(上)
- 靓仔的个人邮箱推荐——靓号邮箱!
- 有效学习的6个方法学习方法
- 【个人研究】21世纪西方运用脑电(EEG)的音乐研究动向分析(二)
- Java 年轻代、年老代、GC
- Relevance Vector Machine (RVM)简介
- 百度云怎么快速清理和谐文件啊
- 正点原子stm32F407学习笔记1——新建工程模板
- flex 的 三个参数:flex-grow、flex-shrink、flex-basis
- ddt python_python——DDT
热门文章
- 根据业务情况对数据校验
- Django项目调用外部程序soffice报错subprocess.CalledProcessError: Command 'soffice --headless --convert-to pdf
- Servlet 介绍
- SQL解析引擎Apache Calcite
- innerhtml修改对象内容后无法显示_javascript的DOM对象
- Vue——vue-resource
- java reader 方法_Java Reader reset()方法
- String实例化两种方式的区别
- 企业级工作流解决方案(十六)--工作流--工作流实体模型
- FTL(FreeMarker)基础