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

文章讲述了在单机session存储用户信息存在跨服务器登录问题,解决方案是采用Redis作为共享存储。通过引入SpringBoot的redis-starter和spring-session-data-redis依赖,配置redis连接,并设置session存储类型为redis,从而实现用户信息的跨服务器共享。同时,展示了如何将用户信息存入和读取session。
摘要由CSDN通过智能技术生成

以用户信息共享举例

一:使用 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: 86400
    store-type: redis  
    # 默认是 none,表示存储在服务器
    # redis 表示从 redis 去写 session

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

另外:

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

// 存储用户信息到 session
request.getSession().setAttribute("user", user);

// 在 session 中读取用户信息
request.getSession().getAttribute("user");

// "user":用户信息存储到 session 中的 key
// user:用户信息

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值