From 61586beb454616f271732dd5a14b96da5dbeab2c Mon Sep 17 00:00:00 2001 From: redkale Date: Wed, 11 Sep 2024 10:12:24 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/redkale/cached/CachedManager.java | 2 +- .../org/redkale/cached/spi/CachedAction.java | 4 ++-- .../org/redkale/cached/spi/CachedEntry.java | 10 +++++----- .../org/redkale/source/CacheMemorySource.java | 20 ++++++++++++------- 4 files changed, 21 insertions(+), 15 deletions(-) diff --git a/src/main/java/org/redkale/cached/CachedManager.java b/src/main/java/org/redkale/cached/CachedManager.java index 8a66f6b7f..ebac3faa6 100644 --- a/src/main/java/org/redkale/cached/CachedManager.java +++ b/src/main/java/org/redkale/cached/CachedManager.java @@ -94,7 +94,7 @@ public interface CachedManager extends Resourcable { * 处理指定缓存key的{@link org.redkale.cached.spi.CachedAction}
* 可用于动态调整缓存时长 * - * @param templetKey 缓存key + * @param templetKey 模板key * @param consumer 处理函数 */ public void acceptCachedAction(String templetKey, Consumer consumer); diff --git a/src/main/java/org/redkale/cached/spi/CachedAction.java b/src/main/java/org/redkale/cached/spi/CachedAction.java index 7c68a3d9f..4b655b9ce 100644 --- a/src/main/java/org/redkale/cached/spi/CachedAction.java +++ b/src/main/java/org/redkale/cached/spi/CachedAction.java @@ -85,7 +85,7 @@ public class CachedAction { this.paramNames = paramNames; this.methodName = method.getName(); this.fieldName = Objects.requireNonNull(fieldName); - this.templetKey = cached.getKey(); + this.templetKey = cached.getTempletKey(); Type returnType = method.getGenericReturnType(); this.async = CompletableFuture.class.isAssignableFrom(TypeToken.typeToClass(returnType)); this.resultType = this.async ? ((ParameterizedType) returnType).getActualTypeArguments()[0] : returnType; @@ -93,7 +93,7 @@ public class CachedAction { String init(ResourceFactory resourceFactory, Object service) { this.manager = resourceFactory.load(cached.getManager(), CachedManager.class); - final String key = environment.getPropertyValue(cached.getKey()); + final String key = environment.getPropertyValue(cached.getTempletKey()); if (key.startsWith("@")) { // 动态加载缓存key生成器 String generatorName = key.substring(1); this.keyGenerator = resourceFactory.findChild(generatorName, CachedKeyGenerator.class); diff --git a/src/main/java/org/redkale/cached/spi/CachedEntry.java b/src/main/java/org/redkale/cached/spi/CachedEntry.java index 6007e3a93..30b1eb29f 100644 --- a/src/main/java/org/redkale/cached/spi/CachedEntry.java +++ b/src/main/java/org/redkale/cached/spi/CachedEntry.java @@ -20,7 +20,7 @@ public class CachedEntry { private String manager; - private String key; + private String templetKey; private String localExpire; @@ -34,7 +34,7 @@ public class CachedEntry { public CachedEntry(DynForCached cached) { this.manager = cached.manager(); - this.key = cached.key(); + this.templetKey = cached.key(); this.localExpire = cached.localExpire(); this.remoteExpire = cached.remoteExpire(); this.timeUnit = cached.timeUnit(); @@ -43,7 +43,7 @@ public class CachedEntry { public CachedEntry(Cached cached) { this.manager = cached.manager(); - this.key = cached.key(); + this.templetKey = cached.key(); this.localExpire = cached.localExpire(); this.remoteExpire = cached.remoteExpire(); this.timeUnit = cached.timeUnit(); @@ -54,8 +54,8 @@ public class CachedEntry { return manager; } - public String getKey() { - return key; + public String getTempletKey() { + return templetKey; } public String getLocalExpire() { diff --git a/src/main/java/org/redkale/source/CacheMemorySource.java b/src/main/java/org/redkale/source/CacheMemorySource.java index 55eaed4e0..ccb7b315f 100644 --- a/src/main/java/org/redkale/source/CacheMemorySource.java +++ b/src/main/java/org/redkale/source/CacheMemorySource.java @@ -159,7 +159,7 @@ public final class CacheMemorySource extends AbstractCacheSource { keys.clear(); long now = System.currentTimeMillis(); container.forEach((k, x) -> { - if (x.expireMills > 0 && (now > (x.lastAccessed + x.expireMills))) { + if (x.isExpired(now)) { keys.add(x.key); } }); @@ -171,7 +171,7 @@ public final class CacheMemorySource extends AbstractCacheSource { } long now2 = System.currentTimeMillis(); rateLimitContainer.forEach((k, x) -> { - if (x.expireMills > 0 && (now2 > (x.lastAccessed + x.expireMills))) { + if (x.isExpired(now2)) { keys.add(x.key); } }); @@ -2604,10 +2604,13 @@ public final class CacheMemorySource extends AbstractCacheSource { return JsonFactory.root().getConvert().convertTo(this); } + public boolean isExpired(long now) { + return expireMills > 0 && (initTime + expireMills) < now; + } + @ConvertColumn(ignore = true) public boolean isExpired() { - long now = System.currentTimeMillis(); - return expireMills > 0 && (initTime + expireMills) < now; + return isExpired(System.currentTimeMillis()); } public void lock() { @@ -2700,15 +2703,18 @@ public final class CacheMemorySource extends AbstractCacheSource { return JsonFactory.root().getConvert().convertTo(this); } - @ConvertColumn(ignore = true) - public boolean isExpired() { - long now = System.currentTimeMillis(); + public boolean isExpired(long now) { if (endTime > 0) { return now >= endTime; } return expireMills > 0 && (initTime + expireMills) < now; } + @ConvertColumn(ignore = true) + public boolean isExpired() { + return isExpired(System.currentTimeMillis()); + } + // value类型只能是byte[]/String/AtomicLong public static T serialToObj(@Nonnull Convert convert, @Nonnull Type type, Serializable value) { if (value == null) {