Spring Boot项目利用Redis实现session管理实例
发布时间 - 2026-01-11 01:50:03 点击率:次在现代网络服务中,session(会话)不得不说是非常重要也是一定要实现的概念,因此在web后台开发中,对session的管理和维护是必须要实现的组件。这篇文章主要是介绍如何在Spring Boot项目中加入redis来实现对session的存储与管理。

1. 利用Spring Initializr来新建一个spring boot项目
2. 在pom.xml中添加redis和session的相关依赖。项目生成的时候虽然也会自动生成父依赖,但是1.5.3版本的spring boot的redis相关依赖有可能不能够正常工作,笔者自行在maven repository找到了比较稳定的版本如下方代码所示
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <version>1.5.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> <version>1.3.0.RELEASE</version> </dependency>
3. 在application.properties中添加redis数据库的相关配置。这里为了演示使用方法只添加了相对简单的配置,即设置了session存储的数据库类型、使用的数据库号、数据库地址和端口号。实战中还会对使用非默认数据库、数据库大小、数据库最大连接数、生存时长、是否写回磁盘等许多参数进行配置
# Redis配置 spring.session.store-type=redis spring.redis.database=0 spring.redis.host=localhost spring.redis.port=6379
4. 编写一个测试的controller来验证是否能够正确地读写session。这里的controller中,我判断了当前获取的session是否是新生成的。如果是,则输出成功创建一个session对象,并返回session的id,然后在session中添加一个字段。如果session不是新生成的,即是已经存在的session,则输出session是已经存在的并返回session的id,然后再输出session中初次创建session保存的key所对应的value
@SpringBootApplication
@EnableRedisHttpSession
@RestController
public class DemoApplication {
private Logger logger = LoggerFactory.getLogger(this.getClass());
public static void main(String[] args) {
SpringApplication app = new SpringApplication(DemoApplication.class);
app.setWebEnvironment(true);
app.run(args);
}
@GetMapping("/hello")
public ResponseEntity<?> hello(HttpSession session) {
if (session.isNew()) {
logger.info("Successfully creates a session ,the id of session :" + session.getId());
session.setAttribute("key", "hello");
} else {
logger.info("session already exists in the server, the id of session :"+ session.getId());
logger.info(session.getAttribute("key").toString());
}
return new ResponseEntity<>("Hello World", HttpStatus.OK);
}
}
5. 测试代码
首先运行Redis客户端
redis-cli
查看当前数据库内容
127.0.0.1:6379> keys * (empty list or set)
运行spring boot项目
第一次浏览器访问localhost:8080/hello,如下图所示则成功运行
查看log可以看到
2017-06-12 00:26:12.601 INFO 9580 — [nio-8080-exec-1] ication$$EnhancerBySpringCGLIB$$de942542 : Successfully creates a session ,the id of session :4368a535-9bfa-406b-975c-e58c2bca1e75
再次访问localhost:8080/hello时,查看log可以看到能够正确地从redis中取出存放在session中的某个key对应的值
2017-06-12 00:30:43.533 INFO 9580 — [nio-8080-exec-5] ication$$EnhancerBySpringCGLIB$$de942542 : session already exists in the server, the id of session :4368a535-9bfa-406b-975c-e58c2bca1e75 2017-06-12 00:30:43.533 INFO 9580 — [nio-8080-exec-5] ication$$EnhancerBySpringCGLIB$$de942542 : hello
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# Spring
# Boot
# Redis
# session
# Redis实现session
# SpringBoot+Shiro学习之密码加密和登录失败次数限制示例
# spring boot 1.5.4 集成shiro+cas
# 实现单点登录和权限控制
# Spring shiro + bootstrap + jquery.validate 实现登录、注册
# spring boot实战教程之shiro session过期时间详解
# SpringBoot整合Shiro的代码详解
# 详解Spring Boot 集成Shiro和CAS
# 详解Spring-Boot集成Spring session并存入redis
# 详解SpringBoot中Session超时原理说明
# spring boot与redis 实现session共享教程
# Spring Boot集成Shiro并利用MongoDB做Session存储的方法详解
# 可以看到
# 所示
# 正确地
# 放在
# 也会
# 有可能
# 会对
# 然后再
# 这篇文章
# 即是
# 来实现
# 不能够
# 创建一个
# 自动生成
# 时长
# 大家多多
# 如下图
# 是否能够
# 新建一个
# 主要是
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何使用Service Provider注册服务_Laravel服务提供者配置与加载
Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】
EditPlus中的正则表达式实战(5)
如何在云主机上快速搭建网站?
如何快速搭建二级域名独立网站?
软银砸40亿美元收购DigitalBridge 强化AI资料中心布局
Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】
如何快速建站并高效导出源代码?
javascript读取文本节点方法小结
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程
详解jQuery中的事件
使用C语言编写圣诞表白程序
Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程
用v-html解决Vue.js渲染中html标签不被解析的问题
如何在IIS中新建站点并配置端口与物理路径?
Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门
Laravel如何使用withoutEvents方法临时禁用模型事件
如何破解联通资金短缺导致的基站建设难题?
Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】
Android Socket接口实现即时通讯实例代码
使用spring连接及操作mongodb3.0实例
Laravel怎么清理缓存_Laravel optimize clear命令详解
音响网站制作视频教程,隆霸音响官方网站?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧
如何用y主机助手快速搭建网站?
Win11关机界面怎么改_Win11自定义关机画面设置【工具】
js实现点击每个li节点,都弹出其文本值及修改
Linux安全能力提升路径_长期防护思维说明【指导】
Java Adapter 适配器模式(类适配器,对象适配器)优缺点对比
高防服务器租用如何选择配置与防御等级?
laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法
Laravel的Blade指令怎么自定义_创建你自己的Laravel Blade Directives
INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】
JavaScript如何实现音频处理_Web Audio API如何工作?
公司网站制作需要多少钱,找人做公司网站需要多少钱?
Laravel怎么使用artisan命令缓存配置和视图
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环
如何基于云服务器快速搭建网站及云盘系统?
Laravel Debugbar怎么安装_Laravel调试工具栏配置指南
百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏
如何在Tomcat中配置并部署网站项目?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
Laravel storage目录权限问题_Laravel文件写入权限设置
,怎么在广州志愿者网站注册?
Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】
详解jQuery中基本的动画方法
Angular 表单中正确绑定输入值以确保提交与验证正常工作

