使用redis快速实现session共享,springboot

1.引入依赖

<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
</dependency>
<!-- 引入 redis 依赖 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>>

在上面的示例中,除了引入Redis组件外,还需要引入spring-session-data-redis依赖。通过此组件实现Session信息的管理。

2.添加session配置类

package com.yangjunbo.JPADemo.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;

@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 86400*30)
public class SessionConfig {
}

在这里插入图片描述上面的示例配置了Session的缓存时间。maxInactiveIntervalInSeconds用于设置Session的失效时间,使用Redis共享Session之后,原Spring Boot的server.session.timeout属性不再有效。经过上面的配置后,Session调用就会自动去Redis上存取。另外,想要达到Session共享的目的,只需要在其他系统上进行同样的配置即可。

3.验证测试

创建测试类


package com.yangjunbo.JPADemo;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpSession;
import java.util.UUID;

@RestController
@RequestMapping()
public class Controller {

    @RequestMapping("/uid")
    String uid(HttpSession session) {
        UUID uid = (UUID) session.getAttribute("uid");
        if (uid == null) {
            uid = UUID.randomUUID();
        }
        session.setAttribute("uid", uid);
        return session.getId();
    }
}


然后,启动项目,运行一个程序实例,启动端口号为8080,在浏览器中输入地址:http://localhost:8080/uid,页面返回会话的sessionId。
在这里插入图片描述
我们可以登录Redis客户端,查看Session是否已经保存到Redis,输入“keys ‘sessions’”查看所有的Session信息,如图所示。
一般mac上redis的安装目录 /usr/local/opt/redis/bin/redis-server /usr/local/etc/redis.conf
在这里插入图片描述从上面的输出可以看到,sessionId是5c7b3e44-1695-4d2d-9955-a8ec80309eaa,与页面返回的sessionId一致。说明Redis中缓存的SessionId和实际使用的Session一致,Session已经在Redis中进行了有效的管理。

最后,模拟分布式系统再启动一个程序实例,启动端口号为8001,在浏览器中输入http://localhost:8001/uid,页面返回会话的SessionId如图所示。
在这里插入图片描述在这里插入图片描述

从输出结果可以看到,程序实例1和程序实例2获取的是同一个Session,这说明两个程序实现了Session共享。

参考书籍 《springboot从入门到实战-章为忠著》

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值