无法使用Java Spring Boot会话数据Redis在Redis中存储会话

时间:2018-07-08 06:17:21

标签: java spring-boot session redis

我认为在Redis中保存会话信息时遇到问题。我尝试按照有关spring-session-data-redis的说明进行操作,但是在启动请求时,redis中找不到任何会话信息。以下是我的代码和配置。

application.properties文件:

spring.session.store-type=redis
spring.session.redis.flush-mode= on-save
spring.session.redis.namespace= spring:session
spring.redis.host= 10.10.10.10
spring.redis.port=10000

pom.xml:

<dependency>
    <groupId>org.springframework.session</groupId>
    <artifactId>spring-session-data-redis</artifactId>
</dependency>
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
    <type>jar</type>
</dependency>

应用程序配置类:

@Configuration
@EnableRedisHttpSession
@PropertySource("application.properties")
public class AppConfig {

    @Value("${spring.redis.host}")
    private String redisHostName;

    @Value("${spring.redis.port}")
    private int redisPort;

    @Bean
    JedisConnectionFactory jedisConnectionFactory() {
        RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration(
                redisHostName, redisPort);
        return new JedisConnectionFactory(redisStandaloneConfiguration);
    }
}

我的示例Get请求控制器:

// test only
    @CrossOrigin
    @GetMapping(value = "/test/test")
    public String justTest(HttpServletRequest request) {
        HttpSession session = request.getSession();
        session.setAttribute("sessionId", "ssssss");

        String value = (String) session.getAttribute("sessionId").toString();
        return value;
    }

我想念什么吗? spring-session-data-redis应该自动将会话存储到Redis,但似乎不像那样。我需要spring-session依赖性和spring-data-redis依赖性吗? redis连接正常,我将其设置为侦听所有接口。

似乎我可以在启动请求时检索会话ID,但是为什么未将会话插入Redis?

1 个答案:

答案 0 :(得分:0)

spring.session.redis.flush-mode =立即

/ **      * Redis会话的刷新模式。默认值为{@code ON_SAVE},仅      *在调用{@link SessionRepository#save(Session)}时更新后备Redis。      *在网络环境中,这恰在提交HTTP响应之前发生。      *

     *将值设置为{@code IMMEDIATE}将确保对      *会话会立即写入Redis实例。      * @返回{@link RedisFlushMode}以使用      * @自1.1起

https://github.com/spring-projects/spring-session/blob/master/spring-session-data-redis/src/main/java/org/springframework/session/data/redis/config/annotation/web/http/EnableRedisHttpSession.java