From 16d5cf9afd8dd03ff89b6537c7c01b1d8e75306f Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Wed, 14 Jan 2026 17:05:39 +0800 Subject: [PATCH] =?UTF-8?q?:art:=20#3843=20=E3=80=90=E5=9F=BA=E7=A1=80?= =?UTF-8?q?=E6=9E=B6=E6=9E=84=E3=80=91=E4=BF=AE=E5=A4=8D=20Spring=20Boot?= =?UTF-8?q?=203=EF=BC=88Spring=20Data=20Redis=203.x=EF=BC=89=E4=B8=8B=20Re?= =?UTF-8?q?disTemplate.getExpire=20=E8=BF=94=E5=9B=9E=E5=80=BC=E8=AF=AD?= =?UTF-8?q?=E4=B9=89=E5=8F=98=E5=8C=96=E5=AF=BC=E8=87=B4=E7=9A=84=E8=BF=87?= =?UTF-8?q?=E6=9C=9F=E5=88=A4=E6=96=AD/=E7=BC=93=E5=AD=98=E5=A4=B1?= =?UTF-8?q?=E6=95=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../weixin/common/redis/RedisTemplateWxRedisOps.java | 2 +- .../weixin/common/redis/CommonWxRedisOpsTest.java | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/redis/RedisTemplateWxRedisOps.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/redis/RedisTemplateWxRedisOps.java index 19d4046c9..d531a2a30 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/redis/RedisTemplateWxRedisOps.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/redis/RedisTemplateWxRedisOps.java @@ -29,7 +29,7 @@ public class RedisTemplateWxRedisOps implements WxRedisOps { @Override public Long getExpire(String key) { - return redisTemplate.getExpire(key); + return redisTemplate.getExpire(key, TimeUnit.SECONDS); } @Override diff --git a/weixin-java-common/src/test/java/me/chanjar/weixin/common/redis/CommonWxRedisOpsTest.java b/weixin-java-common/src/test/java/me/chanjar/weixin/common/redis/CommonWxRedisOpsTest.java index 96ba20ba2..fb53c8c4b 100644 --- a/weixin-java-common/src/test/java/me/chanjar/weixin/common/redis/CommonWxRedisOpsTest.java +++ b/weixin-java-common/src/test/java/me/chanjar/weixin/common/redis/CommonWxRedisOpsTest.java @@ -35,6 +35,17 @@ public class CommonWxRedisOpsTest { Assert.assertTrue(expireSeconds <= 4 && expireSeconds >= 0); } + @Test + public void testGetExpireForNonExistentKey() { + String nonExistentKey = "non_existent_key_" + System.currentTimeMillis(); + Long expire = wxRedisOps.getExpire(nonExistentKey); + // 对于不存在的 key,底层使用 getExpire(key, TimeUnit.SECONDS) 时应返回负值 + // Spring Data Redis 2.x 和 3.x 约定:-2 表示 key 不存在,-1 表示 key 没有过期时间 + // 因此这里不应返回 null,而应返回一个小于 0 的值 + Assert.assertNotNull(expire, "Non-existent key should not have null expiration"); + Assert.assertTrue(expire < 0, "Non-existent key should have negative expiration"); + } + @Test public void testExpire() { String key = "access_token", value = String.valueOf(System.currentTimeMillis());