使用Spring Boot开发项目时我们经常需要存储Session,因为Session中会存一些用户信息或者登录信息 。传统的web服务是将session存储在内存中的,一旦服务挂了,session也就消失了,这时候我们就需要将session存储起来,而Redis就是用来缓存seesion的一种非关系型数据库,我们可以通过配置或者注解的方式将Spring Boot和Redis整合 。而在分布式系统中又会涉及到session共享的问题,多个服务同时部署时session需要共享,Spring Session可以帮助我们实现这一功能 。将Spring Session集成到Spring Boot框架中并使用Redis进行缓存是目前非常流行的解决方案,接下来就跟着小编一起学习吧 。
文章插图
工具/材料IntelliJ IDEA
操作方法
- 01首先我们创建一个Spring Boot 2.x的项目,在application.properties配置文件中添加Redis的配置,Spring和Redis的整合可以参考小编其他的文章,此处不再详解 。我们设置服务端口server.port为8080端口用于启动第一个服务 。
文章插图
02接下来我们需要在pom文件中添加spring-boot-starter-data-redis和spring-session-data-redis这两个依赖,spring-boot-starter-data-redis用于整合Spring Boot和Redis,spring-session-data-redis集成了spring-session和spring-data-redis,提供了session与redis的整合方案 。
文章插图
03接下来我们创建一个配置类RedisSessionConfig,这个类使用@Configuration注解表明这是一个配置类 。在这个类上我们同时添加注解@EnableRedisHttpSession,表示开启Redis的Session管理 。如果需要设置失效时间可以使用@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 3600)表示一小时后失效 。若同时需要设置Redis的命名空间则使用@EnableRedisHttpSession(maxInactiveIntervalInSeconds=3600, redisNamespace="{spring.session.redis.namespace}"),其中{spring.session.redis.namespace}表示从配置文件中读取这个命名空间 。
文章插图
04配置完成后我们写一个测试类SessionController,在这个类中我们写两个方法,一个方法用于往session中存数据,一个用于从session中取数据,代码如下图所示,我们存取请求的url 。启动类非常简单,一般都是通用的,我们创建一个名为SpringbootApplication的启动类,使用main方法启动 。
文章插图
文章插图
05接下来我们使用Postman分别请求上面两个接口,先请求存数据接口,再请求取数据接口,结果如下图所示,我们可以看到数据已从redis中取出 。另外需要注意sessionId的值,这是session共享的关键 。
文章插图
文章插图
06为了验证两个服务是否共享了session,我们修改项目的配置文件,将服务端口server.port改为8090,然后再启动服务 。此时我们不必在请求存数据的接口,只需要修改请求端口号再一次请求取数据的接口即可 。由下图可以看到两次请求的sessionId值相同,实现了session的共享 。
文章插图
文章插图
07以上我们完成了SpringBoot整合SpringSeesion实现Redis缓存的功能,在此我们还要推荐一个Redis的可视化工具RedisDesktopManager,我们可以配置Redis数据库的连接,然后便可以非常直观地查看到存储到Redis中的session了,如下图所示,session的命名空间是share,正是从配置文件中读取到的 。
文章插图
【SpringBoot整合SpringSeesion实现Redis缓存】
- 图灵奖|为什么数据整合很难?图灵奖得主迈克尔·斯通布雷克这样“解答”
- 华为|罗永浩:除了华为真的有技术外,其他都是方案整合商,各位不要装!
- 对于微软来说|微软更新android应用与windows11整合
- 老司机必备神器,整合全网资源,还能无水印下载短视频
- 苹果iCloud文件同步服务整合进iCloud Drive
- |营销大师科特勒:“这样的整合营销传播才叫成功”
- |新媒体时代,整合营销服务商如何实现互联网营销升级?
- ie|电子商务形式下的国际营销渠道整合策略
- webar|将虚拟化身与WebAR体验整合,Geenee与Ready Player Me达成合作
- cocos|推动引擎多行业整合应用,Cocos完成5000万美元B轮融资