使用Spring的@EnableRedisHttpSession时,如何在控制器中获取session或redis key的过期时间?
How to get session or redis key's expiration time in controller when using Spring's @EnableRedisHttpSession?
我正在使用 Spring 引导和 Spring 会话。这是我的简单配置。
@EnableRedisHttpSession
public class Config {}
Spring 默认情况下启动创建一个 RedisConnectionFactory
并且我将相应的 host
, port
信息等放入 application.yml
文件中(为简洁起见删除)
我还添加了与安全相关的信息(为简洁起见将其从此处删除)。
现在这是我的控制器。
@RestController
public HomeController {
@GetMapping("/hello")
public String home(HttpSession session){
// I need redis's key's expiration time. or session id's expiration time.
// how can I get this? Should I use HttpSession?
return "hello";
}
}
如何在控制器中获取会话过期时间?或者更确切地说,我怎样才能得到 redis 的密钥的过期时间?
您需要使用HttpSession
您可以将其作为参数添加到您的控制器方法中,如下所示(也显示在问题中)。
@GetMapping("/hello")
public String home(HttpSession session){
// I need redis's key's expiration time. or session id's expiration time.
// how can I get this? Should I use HttpSession?
int ttl = session.getMaxInactiveInterval(); // this should give redis TTL
return "hello";
}
并且可以使用HttpSession的getMaxInactiveInterval方法获取redis的TTL值,如上代码所示
我正在使用 Spring 引导和 Spring 会话。这是我的简单配置。
@EnableRedisHttpSession
public class Config {}
Spring 默认情况下启动创建一个 RedisConnectionFactory
并且我将相应的 host
, port
信息等放入 application.yml
文件中(为简洁起见删除)
我还添加了与安全相关的信息(为简洁起见将其从此处删除)。
现在这是我的控制器。
@RestController
public HomeController {
@GetMapping("/hello")
public String home(HttpSession session){
// I need redis's key's expiration time. or session id's expiration time.
// how can I get this? Should I use HttpSession?
return "hello";
}
}
如何在控制器中获取会话过期时间?或者更确切地说,我怎样才能得到 redis 的密钥的过期时间?
您需要使用HttpSession
您可以将其作为参数添加到您的控制器方法中,如下所示(也显示在问题中)。
@GetMapping("/hello")
public String home(HttpSession session){
// I need redis's key's expiration time. or session id's expiration time.
// how can I get this? Should I use HttpSession?
int ttl = session.getMaxInactiveInterval(); // this should give redis TTL
return "hello";
}
并且可以使用HttpSession的getMaxInactiveInterval方法获取redis的TTL值,如上代码所示