将用户的session改为分布式共享session

将用户的session改为分布式session

分布式session理解

  1. 使用分布式session的原因:
    后台服务器是分布式的(比如要负载均衡),在A服务器请求的的信息(如用户登录信息)存在A的session中,B服务器并不能识别到。

  2. 解决方法:共享存储,把用户请求的信息保存在A,B服务器都能找到的地方(如图所示)。
    将用户的session改为分布式共享session_第1张图片

  3. 共享存储方案

    1. Redis(基于内存的K/V数据库) √ 此处选择redis,因为用户信息读取/登录及其频繁,Readis基于内存,读写性能很高。
    2. Mysql
    3. 文件服务器

实现session共享

  1. 安装Redis,可以按照官网操作,Redis官网

  2. 后端引入Redis依赖,能够操作redis

        <dependency>
           <groupId>org.springframework.bootgroupId>
           <artifactId>spring-boot-starter-data-redisartifactId>
           <version>2.6.4version>
        dependency>
    
  3. 在yml文件中配置Redis
    store-type:默认是null,表示存储在服务器;现改为redis,表示从redis读写session。

      # Redis 配置
      redis:
        port: 6379
        host: localhost
        database: 0
        store-type: redis
    
  4. 可以使用QuickRedis工具来管理Redis:QuickRedis官网
    将用户的session改为分布式共享session_第2张图片

  5. 把session写到Redis中 ,不用自己手写,引入spring-session和redis的整合,spring自动将session存储到redis中,并且从redis读。

        <dependency>
            <groupId>org.springframework.sessiongroupId>
            <artifactId>spring-session-data-redisartifactId>
            <version>2.6.3version>
        dependency>   
    
  6. 测试验证
    将用户的session改为分布式共享session_第3张图片
    将用户的session改为分布式共享session_第4张图片

你可能感兴趣的:(分布式,java,redis)