我一直在尝试设置存储在Redis中的会话数据的到期时间。因此,在那之后,不仅会话应该过期,而且会话数据也应从Redis中删除。
我正在尝试在Redis上创建一个包含简单用户名(字符串)的会话。我很幸运地将会话数据存储在redis中,就像这样(只是一个例子):
我已使用@EnableRedisHttpSession批注通过spring会话支持HttpSession。 调用 request.getSession()。setAttribute(“ username”,“ Shakir”)时,以上数据将存储在Redis中。 但是,当我使用 request.getSession()。invalidate()使会话无效时。会话无效,但会话数据仍保留在Redis缓存中。
其次,我想设置会话的到期时间。之后,不仅会话应终止,而且redis中的数据也应被删除。我没有在互联网上找到任何好的解决方案的运气。
这是一个简单的端点。这里的用户名和Redis都存储在会话中。
@PostMapping("/login")
public String loginPost(User user , HttpServletRequest request) {
request.getSession().setAttribute("username", user.getUsername());
System.out.println("In login Post");
return "redirect:profile";
}
这是我用来连接到Redis的简单配置。
@Configuration
@EnableRedisHttpSession
public class Config {
@Bean
public static ConfigureRedisAction configureRedisAction() {
return ConfigureRedisAction.NO_OP;
}
@Bean
public LettuceConnectionFactory redisConnectionFactory() {
String hostname = "localhost";
int port = 6379;
RedisStandaloneConfiguration configuration = new RedisStandaloneConfiguration(hostname, port);
return new LettuceConnectionFactory(configuration);
}