【问题标题】:How to determine and show the expiry time of a specific session如何确定和显示特定会话的到期时间
【发布时间】:2020-02-15 19:42:29
【问题描述】:

我正在使用spring-session 并且想知道如何知道特定会话已过期。

查询Redis持久化,我发现以下几行

[ root@redis-master-6fbbc44567-cc28m:/data ]$ redis-cli
127.0.0.1:6379> keys *
1) "spring:session:expirations:1581796140000"
2) "spring:session:sessions:23d6aff1-cb43-44f6-920d-cc3536ab6d46"
127.0.0.1:6379>

将到期日期转换为日期,它们等同于Mon 14 Feb 52095 16:40:00 GMT,这在当年看起来很奇怪。 我们可能会从HttpSession 中提取过期时间:

HttpSession httpSession = request.getSession()
long currTime = System.currentTimeMillis()
long expiryTime = currTime + httpSession.getMaxInactiveInterval() 

但 sn-p 并未准确显示杂草的预期。

我认为我们需要从 Redis 服务器检索过期时间。

我在这里做错了什么?

你们中有人知道如何从 Redis 中检索会话和过期时间吗?

【问题讨论】:

    标签: redis spring-session


    【解决方案1】:

    过期时间戳 1581796140000 是一个 Unix 纪元,以毫秒为单位,转换为 GMT:2020 年 2 月 15 日星期六晚上 7:49:00。

    【讨论】:

    • 感谢您的回复。你是对的。我使用错误的语法将 Unix 纪元转换为 GMT。你有从 Redis 检索过期时间的想法吗?
    • 假设您的意思是 Redis 密钥过期,您可以使用 TTLPTTL 毫秒获得生存时间(以秒为单位)。如果你想要一个 Redis-server 的日期,你需要在 TTL 之外调用TIME 并进行数学计算,但是两次调用之间的时间会出错。
    猜你喜欢
    • 1970-01-01
    • 2017-10-20
    • 2019-11-07
    • 2014-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    相关资源
    最近更新 更多