IT俱乐部 Redis 使用Redis存储SpringBoot项目中Session的详细步骤

使用Redis存储SpringBoot项目中Session的详细步骤

使用Redis存储Spring Boot项目中的Session

在开发Spring Boot项目时,我们通常会遇到如何高效管理Session的问题。默认情况下,Spring Boot会将Session存储在内存中。但在分布式系统中,这种方式显然不太合适。今天,我们将学习如何将Session存储从内存切换到Redis,并验证配置是否成功。

步骤一:添加依赖

1
2
3
4
dependencies {
    implementation("org.springframework.boot:spring-boot-starter-data-redis")
    implementation("org.springframework.session:spring-session-data-redis")
}

步骤二:配置Redis连接

接下来,我们需要在配置文件中添加Redis连接信息。你可以选择使用application.ymlapplication.properties文件。

示例:application.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
spring:
  redis:
    host: localhost
    port: 6379
    password: ""
    lettuce:
      pool:
        max-active: 8
        max-idle: 8
        min-idle: 0
 
server:
  servlet:
    session:
      store-type: redis  # 使用Redis存储Session

示例:application.properties

1
2
3
4
5
6
7
8
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=
spring.redis.lettuce.pool.max-active=8
spring.redis.lettuce.pool.max-idle=8
spring.redis.lettuce.pool.min-idle=0
 
server.servlet.session.store-type=redis  # 使用Redis存储Session

步骤三:启用Spring Session

在主类中添加@EnableRedisHttpSession注解,使Spring Boot能够使用Redis管理Session。

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
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 MyApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

步骤四:检查和测试

完成配置后,重新启动你的Spring Boot应用程序,并进行以下验证:

方法一:使用Redis命令行客户端

  • 连接到Redis服务器
1
redis-cli -h localhost -p 6379
  • 查询Session数据
1
KEYS spring:session:sessions:*
  • 查看具体Session数据
1
HGETALL spring:session:sessions:

方法二:使用Redis GUI工具

你可以使用Redis Desktop Manager、Medis或RedisInsight等图形界面工具,连接到Redis服务器并查看存储的Session数据。

方法三:在代码中查看

通过添加日志或调试信息,输出当前的Session ID和内容。

示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
 
import javax.servlet.http.HttpSession;
import java.util.Enumeration;
 
@RestController
public class SessionController {
 
    @Autowired
    private StringRedisTemplate redisTemplate;
 
    @GetMapping("/check-session")
    public String checkSession(HttpSession session) {
        String sessionId = session.getId();
        Enumeration attributeNames = session.getAttributeNames();
        StringBuilder sessionData = new StringBuilder("Session ID: " + sessionId + "n");
 
        while (attributeNames.hasMoreElements()) {
            String attributeName = attributeNames.nextElement();
            sessionData.append(attributeName).append(": ").append(session.getAttribute(attributeName)).append("n");
        }
 
        // 在日志中输出Session ID和内容
        System.out.println(sessionData.toString());
 
        // 检查Redis中是否存在该Session ID
        Boolean hasKey = redisTemplate.hasKey("spring:session:sessions:" + sessionId);
        return hasKey != null && hasKey ? "Session stored in Redis" : "Session not found in Redis";
    }
}

通过访问 /check-session 端点,可以查看当前Session的ID和内容,并确认是否成功存储在Redis中。

到此这篇关于使用Redis存储SpringBoot项目中Session的详细步骤的文章就介绍到这了,更多相关Redis存储SpringBoot的session内容请搜索IT俱乐部以前的文章或继续浏览下面的相关文章希望大家以后多多支持IT俱乐部!

本文收集自网络,不代表IT俱乐部立场,转载请注明出处。https://www.2it.club/database/redis/12433.html
上一篇
下一篇
联系我们

联系我们

在线咨询: QQ交谈

邮箱: 1120393934@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部