从零开始使用IDEA搭建Springboot+JPA+Swagger2.0+Logback+Lombok+Redis+Shiro1.4项目(六)

Springboot 整合 Redis (Redis 管理 session)

什么是 Redis

Redis通常被称为数据结构服务器,因为值value可以是字符串(String),哈希(Hash),列表(list),集合(sets)和有序集合(sorted sets)等类型。

准备工作

  1. 下载Redis
  2. 配置环境变量,将Redis的路径配置到Path中。
  3. 打开cmd,启动服务:
redis-server.exe

如图则启动成功,关闭当前窗口则服务关闭。
在这里插入图片描述

配置

添加 pom.xml 依赖

添加Redis所需依赖。

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.session</groupId>
	<artifactId>spring-session-data-redis</artifactId>
</dependency>

配置 application.yml 文件

spring.session.store-type:会话存储类型,启用Redis管理session
spring.session.timeout:超出时间则session失效
spring.session.redis.flush-modesession更新策略
spring.session.redis.namespace:用于存储会话的密钥的命名空间
spring.redis.host:连接的redis的ip地址
spring.redis.port:连接的redis的端口

spring:
	session:
		store-type: redis
		timeout: 3600s
		redis:
			flush-mode: on_save
			namespace: spring:session
	redis:
		host: localhost
		port: 6379

修改 Application 类

主类添加 @EnableRedisHttpSession 注解,该注解会创建一个名字叫springSessionRepositoryFilterSpring Bean,其实就是一个Filter,这个Filter负责用Spring Session来替换原先的默认HttpSession实现。

package com.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;

@SpringBootApplication
@EnableRedisHttpSession
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

测试

将项目复制一份,其中一个项目以另一个端口如8081运行。
在控制层中,有一个方法可以获取用户登录时的帐号并存入session

8080端口:登录前,账号信息为空。
在这里插入图片描述
8080登录后,可以看到帐号信息。
在这里插入图片描述
使用8081端口直接查询帐号信息,同样可以看到账号信息。
在这里插入图片描述

总结

Redis管理session的作用:大致可以理解为,在同一台电脑上,浏览某个网站,在当前界面使用的是这个端口,而界面跳转后端口变了,这是想要继续浏览就需要进行二次登录,严重影响用户体验。使用Redis管理session可以使session在多个端口之间共享,免去了重复登录的麻烦。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值