我认为在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?
答案 0 :(得分:0)
spring.session.redis.flush-mode =立即
/ ** * Redis会话的刷新模式。默认值为{@code ON_SAVE},仅 *在调用{@link SessionRepository#save(Session)}时更新后备Redis。 *在网络环境中,这恰在提交HTTP响应之前发生。 *
*将值设置为{@code IMMEDIATE}将确保对 *会话会立即写入Redis实例。 * @返回{@link RedisFlushMode}以使用 * @自1.1起