> 文章列表 > 使用配置文件实现 session 的存储到 redis(SpringBoot)

使用配置文件实现 session 的存储到 redis(SpringBoot)

使用配置文件实现 session 的存储到 redis(SpringBoot)

用户信息共享举例

一:使用 session 单机存储信息出现的问题以及解决方案

       1. session 单机存储问题:

        如果通过 session 完成用户信息的存储在单机上,那么在服务器 A 上登录后,在服务器 B 上登陆之后会找不到已登录的用户信息。

        2. 解决方案

                1. 使用 redis 作为共享数据的存储。

                2. 为什么使用 redis 作为用户数据的存储?

                        因为用户读取 / 是否登录的判断及其频繁,redis 基于内存,读写性能高,简单的数据单机 qps 5w ~ 10w。而 MySQL 的 qps 一般只有 4k ~ 5k。

二:实现 redis 共享用户数据

        1. 引入 redis 相关的依赖

                引入 redis-starter,能够操作 redis(注意:这里的版本引入与 SpringBoot 相同的版本。)

                引入 spring-session-redis 的整合,使得 session 自动存储到 redis 中

               

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

        2. 写入 redis 配置

spring:# redis 配置redis:port: 6379  # 端口host: localhost  # 地址 如果 redis 在虚拟机就写虚拟机的 ip 地址database: 0  # 使用的 redis 库(0 ~ 15) 

        3. 修改 spring-session 存储配置

spring:session:timeout: 86400store-type: redis  # 默认是 none,表示存储在服务器# redis 表示从 redis 去写 session

配置完成之后,就可以将登录之后的用户信息存储到 redis 中。

另外:

怎么将用户信息在 session 中存入 / 读取。

// 存储用户信息到 session
request.getSession().setAttribute("user", user);// 在 session 中读取用户信息
request.getSession().getAttribute("user");// "user":用户信息存储到 session 中的 key
// user:用户信息