SpringBoot整合SpringSeesion实现Redis缓存

使用Spring Boot开发项目时我们经常需要存储Session, 因为Session中会存一些用户信息或者登录信息 。 传统的web服务是将session存储在内存中的, 一旦服务挂了, session也就消失了, 这时候我们就需要将session存储起来, 而Redis就是用来缓存seesion的一种非关系型数据库, 我们可以通过配置或者注解的方式将Spring Boot和Redis整合 。 而在分布式系统中又会涉及到session共享的问题, 多个服务同时部署时session需要共享, Spring Session可以帮操作方式 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 【SpringBoot整合SpringSeesion实现Redis缓存】接下来我们建立一个设置装备摆设类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, 恰是从设置装备摆设文件中读取到的 。


出格提醒 若是Redis办事器是良多项目共用的, 很是建议设置装备摆设定名空间, 不然同时打开多个项目标浏览器页面可能会导致session错乱的现象 。

以上内容就是SpringBoot整合SpringSeesion实现Redis缓存的内容啦, 希望对你有所帮助哦!

    推荐阅读