From 9913a901aad12783ddd1c48b6e26a843a525690d Mon Sep 17 00:00:00 2001 From: click33 <2393584716@qq.com> Date: Fri, 16 May 2025 20:53:32 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E9=87=8D=E6=9E=84=20sa-token-redis?= =?UTF-8?q?-template=E3=80=81sa-token-redis-template-jdk-serializer=20?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E4=B8=AD=20update=20=E6=96=B9=E6=B3=95=20ttl?= =?UTF-8?q?=20=E8=8E=B7=E5=8F=96=E6=96=B9=E5=BC=8F=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E6=AF=AB=E7=A7=92=EF=BC=8C=E4=BB=A5=E5=87=8F=E5=B0=91=20update?= =?UTF-8?q?=20=E6=97=B6=E7=9A=84=20ttl=20=E8=AE=A1=E7=AE=97=E8=AF=AF?= =?UTF-8?q?=E5=B7=AE=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../satoken/dao/SaTokenDaoForRedisTemplate.java | 14 ++++++++++---- ...SaTokenDaoForRedisTemplateUseJdkSerializer.java | 14 ++++++++++---- .../satoken/dao/SaTokenDaoForRedisTemplate.java | 14 ++++++++++---- 3 files changed, 30 insertions(+), 12 deletions(-) diff --git a/sa-token-plugin/sa-token-redis-template-jdk-serializer/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisTemplate.java b/sa-token-plugin/sa-token-redis-template-jdk-serializer/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisTemplate.java index 72570fef..b6133d2d 100644 --- a/sa-token-plugin/sa-token-redis-template-jdk-serializer/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisTemplate.java +++ b/sa-token-plugin/sa-token-redis-template-jdk-serializer/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisTemplate.java @@ -95,12 +95,18 @@ public class SaTokenDaoForRedisTemplate implements SaTokenDaoByObjectFollowStrin */ @Override public void update(String key, String value) { - long expire = getTimeout(key); - // -2 = 无此键 - if(expire == SaTokenDao.NOT_VALUE_EXPIRE) { + @SuppressWarnings("all") + long expireMs = stringRedisTemplate.getExpire(key, TimeUnit.MILLISECONDS); + // -2 = 无此键 + if (expireMs == SaTokenDao.NOT_VALUE_EXPIRE) { return; } - this.set(key, value, expire); + // -1 = 永不过期 + if(expireMs == SaTokenDao.NEVER_EXPIRE) { + stringRedisTemplate.opsForValue().set(key, value); + } else { + stringRedisTemplate.opsForValue().set(key, value, expireMs, TimeUnit.MILLISECONDS); + } } /** diff --git a/sa-token-plugin/sa-token-redis-template-jdk-serializer/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisTemplateUseJdkSerializer.java b/sa-token-plugin/sa-token-redis-template-jdk-serializer/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisTemplateUseJdkSerializer.java index 94fb4532..a57a91cc 100644 --- a/sa-token-plugin/sa-token-redis-template-jdk-serializer/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisTemplateUseJdkSerializer.java +++ b/sa-token-plugin/sa-token-redis-template-jdk-serializer/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisTemplateUseJdkSerializer.java @@ -95,12 +95,18 @@ public class SaTokenDaoForRedisTemplateUseJdkSerializer extends SaTokenDaoForRed */ @Override public void updateObject(String key, Object object) { - long expire = getObjectTimeout(key); - // -2 = 无此键 - if(expire == SaTokenDao.NOT_VALUE_EXPIRE) { + @SuppressWarnings("all") + long expireMs = stringRedisTemplate.getExpire(key, TimeUnit.MILLISECONDS); + // -2 = 无此键 + if (expireMs == SaTokenDao.NOT_VALUE_EXPIRE) { return; } - this.setObject(key, object, expire); + // -1 = 永不过期 + if(expireMs == SaTokenDao.NEVER_EXPIRE) { + objectRedisTemplate.opsForValue().set(key, object); + } else { + objectRedisTemplate.opsForValue().set(key, object, expireMs, TimeUnit.MILLISECONDS); + } } /** diff --git a/sa-token-plugin/sa-token-redis-template/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisTemplate.java b/sa-token-plugin/sa-token-redis-template/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisTemplate.java index 35955b12..06ef8797 100644 --- a/sa-token-plugin/sa-token-redis-template/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisTemplate.java +++ b/sa-token-plugin/sa-token-redis-template/src/main/java/cn/dev33/satoken/dao/SaTokenDaoForRedisTemplate.java @@ -94,12 +94,18 @@ public class SaTokenDaoForRedisTemplate implements SaTokenDaoByObjectFollowStrin */ @Override public void update(String key, String value) { - long expire = getTimeout(key); - // -2 = 无此键 - if(expire == SaTokenDao.NOT_VALUE_EXPIRE) { + @SuppressWarnings("all") + long expireMs = stringRedisTemplate.getExpire(key, TimeUnit.MILLISECONDS); + // -2 = 无此键 + if (expireMs == SaTokenDao.NOT_VALUE_EXPIRE) { return; } - this.set(key, value, expire); + // -1 = 永不过期 + if(expireMs == SaTokenDao.NEVER_EXPIRE) { + stringRedisTemplate.opsForValue().set(key, value); + } else { + stringRedisTemplate.opsForValue().set(key, value, expireMs, TimeUnit.MILLISECONDS); + } } /**