MST

星途 面试题库

面试题:微服务架构下Spring Cloud分布式会话管理中,如何实现基于Redis的会话共享?

在Spring Cloud微服务架构里,阐述使用Redis实现分布式会话共享的具体步骤,包括相关依赖引入、配置文件的修改以及关键代码片段。
35.1万 热度难度
后端开发微服务架构

知识考点

AI 面试

面试题答案

一键面试

1. 引入相关依赖

pom.xml 文件中添加 Redis 相关依赖,以 Spring Boot 项目为例:

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

2. 修改配置文件

application.yml 中添加 Redis 配置:

spring:
  redis:
    host: your-redis-host
    port: 6379
    password: your-redis-password
    database: 0
  session:
    store-type: redis
    redis:
      flush-mode: on-save
      namespace: spring:session

3. 关键代码片段

配置类

创建一个配置类,用于配置 Spring Session 使用 Redis:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
import org.springframework.session.web.http.CookieSerializer;
import org.springframework.session.web.http.DefaultCookieSerializer;

@Configuration
@EnableRedisHttpSession
public class SessionConfig {

    @Bean
    public CookieSerializer cookieSerializer() {
        DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();
        cookieSerializer.setCookieName("YOUR_SESSION_COOKIE_NAME");
        cookieSerializer.setDomainName("YOUR_DOMAIN_NAME");
        cookieSerializer.setUseHttpOnly(true);
        return cookieSerializer;
    }
}

在上述代码中,@EnableRedisHttpSession 注解启用了基于 Redis 的 Spring Session。cookieSerializer 方法用于配置会话 cookie 的相关属性,如 cookie 名称、域名以及是否仅允许 HTTP 访问等。

这样,在 Spring Cloud 微服务架构中,就实现了使用 Redis 进行分布式会话共享。