1. 首页
  2. Java

Springboot web 如何使用 redis 存储 session 数据,具体都要进行哪些配置

添加依赖

首先,你需要在 pom.xml 中添加 Redis 和 Spring Session 的依赖:

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

配置 Redis

application.propertiesapplication.yml 中配置 Redis 的连接信息:

# application.properties
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=yourpassword # 如果没有密码可以不加

启用 Spring Session

在你的 Spring Boot 应用主类上添加 @EnableRedisHttpSession 注解,以启用 Redis 存储的 HTTP Session:

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 YourApplication {

    public static void main(String[] args) {
        SpringApplication.run(YourApplication.class, args);
    }
}

使用 Session

在你的 Controller 中,你可以直接使用 HttpSession 来存储和获取 Session 数据:

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpSession;

@RestController
public class SessionController {

    @GetMapping("/setSession")
    public String setSession(@RequestParam String value, HttpSession session) {
        session.setAttribute("myKey", value);
        return "Session value set!";
    }

    @GetMapping("/getSession")
    public String getSession(HttpSession session) {
        return (String) session.getAttribute("myKey");
    }
}

配置Session的过期时间

spring:
  session:
    timeout: 31536000
    store-type: redis
server:
  servlet:
    session:
      cookie:
        max-age: 31536000

TOP