From a780fa0ad7e3d2fa2fac6fa02f29390ecf54bf4d Mon Sep 17 00:00:00 2001
From: noear
Date: Mon, 3 Mar 2025 20:07:12 +0800
Subject: [PATCH 1/6] =?UTF-8?q?perf:=20noear-redisx=20=E5=8D=87=E4=B8=BA?=
=?UTF-8?q?=201.6.9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sa-token-dependencies/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sa-token-dependencies/pom.xml b/sa-token-dependencies/pom.xml
index 8e10d7f1..11d06d0d 100644
--- a/sa-token-dependencies/pom.xml
+++ b/sa-token-dependencies/pom.xml
@@ -25,7 +25,7 @@
3.0.9.RELEASE
2.3.34
3.0.1
- 1.6.2
+ 1.6.9
3.2.88
4.9.17
3.14.4
From fce89c2efa675d950641c56868b1abc2b1bab4fe Mon Sep 17 00:00:00 2001
From: noear
Date: Mon, 3 Mar 2025 20:07:42 +0800
Subject: [PATCH 2/6] =?UTF-8?q?perf:=20noear-snack3=20=E5=8D=87=E4=B8=BA?=
=?UTF-8?q?=203.2.127?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
sa-token-dependencies/pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sa-token-dependencies/pom.xml b/sa-token-dependencies/pom.xml
index 11d06d0d..728ce526 100644
--- a/sa-token-dependencies/pom.xml
+++ b/sa-token-dependencies/pom.xml
@@ -26,7 +26,7 @@
2.3.34
3.0.1
1.6.9
- 3.2.88
+ 3.2.127
4.9.17
3.14.4
2.5.0
From caeb4eba1579dafcf765af43be58188fbc3b692e Mon Sep 17 00:00:00 2001
From: noear
Date: Mon, 3 Mar 2025 20:23:09 +0800
Subject: [PATCH 3/6] =?UTF-8?q?perf:=20sa-token-solon-plugin=20=E7=A7=BB?=
=?UTF-8?q?=E9=99=A4=20dao=20=E4=B8=8B=E7=9A=84=E4=BB=A3=E7=A0=81=EF=BC=88?=
=?UTF-8?q?=E7=94=B1=E5=85=B7=E4=BD=93=E6=8F=92=E4=BB=B6=E5=A4=84=E7=90=86?=
=?UTF-8?q?=EF=BC=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../dao/SaSessionForJacksonCustomized.java | 47 ---
.../satoken/solon/dao/SaTokenDaoOfRedis.java | 38 ---
.../solon/dao/SaTokenDaoOfRedisBase64.java | 169 ----------
.../solon/dao/SaTokenDaoOfRedisJson.java | 176 -----------
.../dao/SaTokenDaoOfRedissonJackson.java | 298 ------------------
5 files changed, 728 deletions(-)
delete mode 100644 sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/dao/SaSessionForJacksonCustomized.java
delete mode 100644 sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/dao/SaTokenDaoOfRedis.java
delete mode 100644 sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/dao/SaTokenDaoOfRedisBase64.java
delete mode 100644 sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/dao/SaTokenDaoOfRedisJson.java
delete mode 100644 sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/dao/SaTokenDaoOfRedissonJackson.java
diff --git a/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/dao/SaSessionForJacksonCustomized.java b/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/dao/SaSessionForJacksonCustomized.java
deleted file mode 100644
index 86a26973..00000000
--- a/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/dao/SaSessionForJacksonCustomized.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2020-2099 sa-token.cc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package cn.dev33.satoken.solon.dao;
-
-import cn.dev33.satoken.session.SaSession;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-
-/**
- * Jackson定制版SaSession,忽略 timeout 等属性的序列化
- *
- * @author click33
- * @since 1.34.0
- */
-@JsonIgnoreProperties({"timeout"})
-public class SaSessionForJacksonCustomized extends SaSession {
-
- /**
- *
- */
- private static final long serialVersionUID = -7600983549653130681L;
-
- public SaSessionForJacksonCustomized() {
- super();
- }
-
- /**
- * 构建一个Session对象
- * @param id Session的id
- */
- public SaSessionForJacksonCustomized(String id) {
- super(id);
- }
-
-}
diff --git a/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/dao/SaTokenDaoOfRedis.java b/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/dao/SaTokenDaoOfRedis.java
deleted file mode 100644
index 0d39ff60..00000000
--- a/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/dao/SaTokenDaoOfRedis.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2020-2099 sa-token.cc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package cn.dev33.satoken.solon.dao;
-
-import org.noear.redisx.RedisClient;
-
-import java.util.Properties;
-
-/**
- * SaTokenDao 的 redis 适配
- *
- * @author noear
- * @since 1.6
- */
-public class SaTokenDaoOfRedis extends SaTokenDaoOfRedisBase64 {
-
- public SaTokenDaoOfRedis(Properties props) {
- super(props);
- }
-
- public SaTokenDaoOfRedis(RedisClient redisClient) {
- super(redisClient);
- }
-
-}
\ No newline at end of file
diff --git a/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/dao/SaTokenDaoOfRedisBase64.java b/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/dao/SaTokenDaoOfRedisBase64.java
deleted file mode 100644
index c92eb8e4..00000000
--- a/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/dao/SaTokenDaoOfRedisBase64.java
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright 2020-2099 sa-token.cc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package cn.dev33.satoken.solon.dao;
-
-import cn.dev33.satoken.dao.SaTokenDao;
-import cn.dev33.satoken.dao.auto.SaTokenDaoBySessionFollowObject;
-import cn.dev33.satoken.util.SaFoxUtil;
-import org.noear.redisx.RedisClient;
-import org.noear.redisx.plus.RedisBucket;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-import java.util.Set;
-
-/**
- * SaTokenDao 的 redis 适配(可以完全精准还原所有序列化类型)
- *
- * @author noear
- * @since 1.6
- */
-public class SaTokenDaoOfRedisBase64 implements SaTokenDaoBySessionFollowObject {
- private final RedisBucket redisBucket;
-
- public SaTokenDaoOfRedisBase64(Properties props) {
- this(new RedisClient(props));
- }
-
- public SaTokenDaoOfRedisBase64(RedisClient redisClient) {
- redisBucket = redisClient.getBucket();
- }
-
-
- /**
- * 获取Value,如无返空
- */
- @Override
- public String get(String key) {
- return redisBucket.get(key);
- }
-
- /**
- * 写入Value,并设定存活时间 (单位: 秒)
- */
- @Override
- public void set(String key, String value, long timeout) {
- if (timeout > 0 || timeout == SaTokenDao.NEVER_EXPIRE) {
- redisBucket.store(key, value, (int) timeout);
- }
- }
-
- /**
- * 修改指定key-value键值对 (过期时间不变)
- */
- @Override
- public void update(String key, String value) {
- long expire = getTimeout(key);
- this.set(key, value, expire);
- }
-
- /**
- * 删除Value
- */
- @Override
- public void delete(String key) {
- redisBucket.remove(key);
- }
-
- /**
- * 获取Value的剩余存活时间 (单位: 秒)
- */
- @Override
- public long getTimeout(String key) {
- return redisBucket.ttl(key);
- }
-
- /**
- * 修改Value的剩余存活时间 (单位: 秒)
- */
- @Override
- public void updateTimeout(String key, long timeout) {
- if (redisBucket.exists(key)) {
- redisBucket.delay(key, (int) timeout);
- }
- }
-
-
- /**
- * 获取Object,如无返空
- */
- @Override
- public Object getObject(String key) {
- return redisBucket.getAndDeserialize(key);
- }
-
- @Override
- public T getObject(String key, Class classType) {
- return redisBucket.getAndDeserialize(key, classType);
- }
-
- /**
- * 写入Object,并设定存活时间 (单位: 秒)
- */
- @Override
- public void setObject(String key, Object object, long timeout) {
- if (timeout > 0 || timeout == SaTokenDao.NEVER_EXPIRE) {
- redisBucket.storeAndSerialize(key, object, (int) timeout);
- }
- }
-
- /**
- * 更新Object (过期时间不变)
- */
- @Override
- public void updateObject(String key, Object object) {
- long expire = getObjectTimeout(key);
- this.setObject(key, object, expire);
- }
-
- /**
- * 删除Object
- */
- @Override
- public void deleteObject(String key) {
- redisBucket.remove(key);
- }
-
- /**
- * 获取Object的剩余存活时间 (单位: 秒)
- */
- @Override
- public long getObjectTimeout(String key) {
- return redisBucket.ttl(key);
- }
-
- /**
- * 修改Object的剩余存活时间 (单位: 秒)
- */
- @Override
- public void updateObjectTimeout(String key, long timeout) {
- if (redisBucket.exists(key)) {
- redisBucket.delay(key, (int) timeout);
- }
- }
-
-
- /**
- * 搜索数据
- */
- @Override
- public List searchData(String prefix, String keyword, int start, int size, boolean sortType) {
- Set keys = redisBucket.keys(prefix + "*" + keyword + "*");
- List list = new ArrayList(keys);
- return SaFoxUtil.searchList(list, start, size, sortType);
- }
-}
\ No newline at end of file
diff --git a/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/dao/SaTokenDaoOfRedisJson.java b/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/dao/SaTokenDaoOfRedisJson.java
deleted file mode 100644
index 161733d7..00000000
--- a/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/dao/SaTokenDaoOfRedisJson.java
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Copyright 2020-2099 sa-token.cc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package cn.dev33.satoken.solon.dao;
-
-import cn.dev33.satoken.dao.SaTokenDao;
-import cn.dev33.satoken.dao.auto.SaTokenDaoBySessionFollowObject;
-import cn.dev33.satoken.util.SaFoxUtil;
-import org.noear.redisx.RedisClient;
-import org.noear.redisx.plus.RedisBucket;
-import org.noear.snack.ONode;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-import java.util.Set;
-
-/**
- * SaTokenDao 的 redis 适配(基于json序列化,不能完全精准还原所有类型)
- *
- * @author noear
- * @since 1.6
- */
-public class SaTokenDaoOfRedisJson implements SaTokenDaoBySessionFollowObject {
- private final RedisBucket redisBucket;
-
- public SaTokenDaoOfRedisJson(Properties props) {
- this(new RedisClient(props));
- }
-
- public SaTokenDaoOfRedisJson(RedisClient redisClient) {
- redisBucket = redisClient.getBucket();
-
- // 重写 SaSession 生成策略
- //SaStrategy.instance.createSession = (sessionId) -> new SaSessionForJson(sessionId);
- }
-
-
- /**
- * 获取Value,如无返空
- */
- @Override
- public String get(String key) {
- return redisBucket.get(key);
- }
-
- /**
- * 写入Value,并设定存活时间 (单位: 秒)
- */
- @Override
- public void set(String key, String value, long timeout) {
- if (timeout > 0 || timeout == SaTokenDao.NEVER_EXPIRE) {
- redisBucket.store(key, value, (int) timeout);
- }
- }
-
- /**
- * 修改指定key-value键值对 (过期时间不变)
- */
- @Override
- public void update(String key, String value) {
- long expire = getTimeout(key);
- this.set(key, value, expire);
- }
-
- /**
- * 删除Value
- */
- @Override
- public void delete(String key) {
- redisBucket.remove(key);
- }
-
- /**
- * 获取Value的剩余存活时间 (单位: 秒)
- */
- @Override
- public long getTimeout(String key) {
- return redisBucket.ttl(key);
- }
-
- /**
- * 修改Value的剩余存活时间 (单位: 秒)
- */
- @Override
- public void updateTimeout(String key, long timeout) {
- if (redisBucket.exists(key)) {
- redisBucket.delay(key, (int) timeout);
- }
- }
-
-
- /**
- * 获取Object,如无返空
- */
- @Override
- public Object getObject(String key) {
- String value = get(key);
- return ONode.deserialize(value);
- }
-
- @Override
- public T getObject(String key, Class classType) {
- String value = get(key);
- return ONode.deserialize(value, classType);
- }
-
- /**
- * 写入Object,并设定存活时间 (单位: 秒)
- */
- @Override
- public void setObject(String key, Object object, long timeout) {
- if (timeout > 0 || timeout == SaTokenDao.NEVER_EXPIRE) {
- String value = ONode.serialize(object);
- set(key, value, timeout);
- }
- }
-
- /**
- * 更新Object (过期时间不变)
- */
- @Override
- public void updateObject(String key, Object object) {
- long expire = getObjectTimeout(key);
- this.setObject(key, object, expire);
- }
-
- /**
- * 删除Object
- */
- @Override
- public void deleteObject(String key) {
- redisBucket.remove(key);
- }
-
- /**
- * 获取Object的剩余存活时间 (单位: 秒)
- */
- @Override
- public long getObjectTimeout(String key) {
- return redisBucket.ttl(key);
- }
-
- /**
- * 修改Object的剩余存活时间 (单位: 秒)
- */
- @Override
- public void updateObjectTimeout(String key, long timeout) {
- if (redisBucket.exists(key)) {
- redisBucket.delay(key, (int) timeout);
- }
- }
-
-
- /**
- * 搜索数据
- */
- @Override
- public List searchData(String prefix, String keyword, int start, int size, boolean sortType) {
- Set keys = redisBucket.keys(prefix + "*" + keyword + "*");
- List list = new ArrayList<>(keys);
- return SaFoxUtil.searchList(list, start, size, sortType);
- }
-}
\ No newline at end of file
diff --git a/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/dao/SaTokenDaoOfRedissonJackson.java b/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/dao/SaTokenDaoOfRedissonJackson.java
deleted file mode 100644
index cbecff38..00000000
--- a/sa-token-starter/sa-token-solon-plugin/src/main/java/cn/dev33/satoken/solon/dao/SaTokenDaoOfRedissonJackson.java
+++ /dev/null
@@ -1,298 +0,0 @@
-/*
- * Copyright 2020-2099 sa-token.cc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package cn.dev33.satoken.solon.dao;
-
-import cn.dev33.satoken.dao.SaTokenDao;
-import cn.dev33.satoken.dao.auto.SaTokenDaoBySessionFollowObject;
-import cn.dev33.satoken.strategy.SaStrategy;
-import cn.dev33.satoken.util.SaFoxUtil;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;
-import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;
-import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
-import com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;
-import org.redisson.api.RBatch;
-import org.redisson.api.RBucket;
-import org.redisson.api.RBucketAsync;
-import org.redisson.api.RedissonClient;
-import org.redisson.client.codec.Codec;
-import org.redisson.codec.JsonJacksonCodec;
-
-import java.time.Duration;
-import java.time.LocalDate;
-import java.time.LocalDateTime;
-import java.time.LocalTime;
-import java.time.format.DateTimeFormatter;
-import java.util.List;
-import java.util.stream.Collectors;
-import java.util.stream.Stream;
-
-/**
- * Sa-Token 持久层实现 [ Redisson客户端、Redis存储、Jackson序列化 ]
- *
- * @author 疯狂的狮子Li
- * @author noear
- * @since 1.34.0
- */
-public class SaTokenDaoOfRedissonJackson implements SaTokenDaoBySessionFollowObject {
-
- public static final String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
- public static final String DATE_PATTERN = "yyyy-MM-dd";
- public static final String TIME_PATTERN = "HH:mm:ss";
- public static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern(DATE_TIME_PATTERN);
- public static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern(DATE_PATTERN);
- public static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern(TIME_PATTERN);
-
- /**
- * ObjectMapper 对象 (以 public 作用域暴露出此对象,方便开发者二次更改配置)
- *
- * 例如:
- *
- * SaTokenDaoRedisJackson redisJackson = (SaTokenDaoRedisJackson) SaManager.getSaTokenDao();
- * redisJackson.objectMapper.xxx = xxx;
- *
- *
- */
- public final ObjectMapper objectMapper;
-
- /**
- * 序列化方式
- */
- public final Codec codec;
-
- /**
- * redisson 客户端
- */
- public final RedissonClient redissonClient;
-
- public SaTokenDaoOfRedissonJackson(RedissonClient redissonClient) {
- this.objectMapper = new ObjectMapper();
-
- this.objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
-
- // 配置[忽略未知字段]
- this.objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
-
- // 配置[时间类型转换]
- JavaTimeModule timeModule = new JavaTimeModule();
- // LocalDateTime序列化与反序列化
- timeModule.addSerializer(new LocalDateTimeSerializer(DATE_TIME_FORMATTER));
- timeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DATE_TIME_FORMATTER));
- // LocalDate序列化与反序列化
- timeModule.addSerializer(new LocalDateSerializer(DATE_FORMATTER));
- timeModule.addDeserializer(LocalDate.class, new LocalDateDeserializer(DATE_FORMATTER));
- // LocalTime序列化与反序列化
- timeModule.addSerializer(new LocalTimeSerializer(TIME_FORMATTER));
- timeModule.addDeserializer(LocalTime.class, new LocalTimeDeserializer(TIME_FORMATTER));
- this.objectMapper.registerModule(timeModule);
-
- // 重写 SaSession 生成策略
- SaStrategy.instance.createSession = (sessionId) -> new SaSessionForJacksonCustomized(sessionId);
-
-
- // 开始初始化相关组件
- this.codec = new JsonJacksonCodec(objectMapper);
- this.redissonClient = redissonClient;
- }
-
-
- /**
- * 获取Value,如无返空
- */
- @Override
- public String get(String key) {
- RBucket rBucket = redissonClient.getBucket(key, codec);
- return rBucket.get();
- }
-
- /**
- * 写入Value,并设定存活时间 (单位: 秒)
- */
- @Override
- public void set(String key, String value, long timeout) {
- if(timeout == 0 || timeout <= SaTokenDao.NOT_VALUE_EXPIRE) {
- return;
- }
- // 判断是否为永不过期
- if(timeout == SaTokenDao.NEVER_EXPIRE) {
- RBucket bucket = redissonClient.getBucket(key, codec);
- bucket.set(value);
- } else {
- RBatch batch = redissonClient.createBatch();
- RBucketAsync bucket = batch.getBucket(key, codec);
- bucket.setAsync(value);
- bucket.expireAsync(Duration.ofSeconds(timeout));
- batch.execute();
- }
- }
-
- /**
- * 修修改指定key-value键值对 (过期时间不变)
- */
- @Override
- public void update(String key, String value) {
- long expire = getTimeout(key);
- // -2 = 无此键
- if(expire == SaTokenDao.NOT_VALUE_EXPIRE) {
- return;
- }
- this.set(key, value, expire);
- }
-
- /**
- * 删除Value
- */
- @Override
- public void delete(String key) {
- redissonClient.getBucket(key, codec).delete();
- }
-
- /**
- * 获取Value的剩余存活时间 (单位: 秒)
- */
- @Override
- public long getTimeout(String key) {
- RBucket rBucket = redissonClient.getBucket(key, codec);
- long timeout = rBucket.remainTimeToLive();
- return timeout < 0 ? timeout : timeout / 1000;
- }
-
- /**
- * 修改Value的剩余存活时间 (单位: 秒)
- */
- @Override
- public void updateTimeout(String key, long timeout) {
- // 判断是否想要设置为永久
- if(timeout == SaTokenDao.NEVER_EXPIRE) {
- long expire = getTimeout(key);
- if(expire == SaTokenDao.NEVER_EXPIRE) {
- // 如果其已经被设置为永久,则不作任何处理
- } else {
- // 如果尚未被设置为永久,那么再次set一次
- this.set(key, this.get(key), timeout);
- }
- return;
- }
- RBucket rBucket = redissonClient.getBucket(key, codec);
- rBucket.expire(Duration.ofSeconds(timeout));
- }
-
-
-
- /**
- * 获取Object,如无返空
- */
- @Override
- public Object getObject(String key) {
- RBucket