全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Spring Boot项目利用Redis实现session管理实例

在现代网络服务中,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存储的方法详解  # 可以看到  # 所示  # 正确地  # 放在  # 也会  # 有可能  # 会对  # 然后再  # 这篇文章  # 即是  # 来实现  # 不能够  # 创建一个  # 自动生成  # 时长  # 大家多多  # 如下图  # 是否能够  # 新建一个  # 主要是 


相关文章: 太原网站制作公司有哪些,网约车营运证查询官网?  建站之星上传入口如何快速找到?  极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?  建站主机如何安装配置?新手必看操作指南  已有域名建站全流程解析:网站搭建步骤与建站工具选择  如何在景安云服务器上绑定域名并配置虚拟主机?  青浦网站制作公司有哪些,苹果官网发货地是哪里?  如何破解联通资金短缺导致的基站建设难题?  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  建站之星后台管理如何实现高效配置?  IOS倒计时设置UIButton标题title的抖动问题  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  建站之星展会模板:智能建站与自助搭建高效解决方案  智能起名网站制作软件有哪些,制作logo的软件?  制作旅游网站html,怎样注册旅游网站?  建站主机选购指南:核心配置优化与品牌推荐方案  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  如何通过远程VPS快速搭建个人网站?  建站之星多图banner生成与模板自定义指南  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  如何在腾讯云服务器快速搭建个人网站?  如何在Golang中处理模块冲突_解决依赖版本不兼容问题  高端建站如何打造兼具美学与转化的品牌官网?  ,怎么用自己头像做动态表情包?  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  香港服务器部署网站为何提示未备案?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  如何选择适合PHP云建站的开源框架?  Python如何创建带属性的XML节点  商务网站制作工程师,从哪几个方面把握电子商务网站主页和页面的特色设计?  网站制作知乎推荐,想做自己的网站用什么工具比较好?  如何快速生成专业多端适配建站电话?  营销式网站制作方案,销售哪个网站招聘效果最好?  如何登录建站主机?访问步骤全解析  建站主机选哪种环境更利于SEO优化?  Swift开发中switch语句值绑定模式  黑客如何利用漏洞与弱口令入侵网站服务器?  广东企业建站网站优化与SEO营销核心策略指南  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  已有域名如何免费搭建网站?  小程序网站制作需要准备什么资料,如何制作小程序?  网站制作软件有哪些,制图软件有哪些?  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  如何配置WinSCP新建站点的密钥验证步骤?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  建站主机选虚拟主机还是云服务器更好?  香港服务器租用费用高吗?如何避免常见误区?  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  建站之星2.7模板快速切换与批量管理功能操作指南  建站之星安装路径如何正确选择及配置? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。