cache优化
This commit is contained in:
@@ -56,7 +56,8 @@
|
||||
<!--
|
||||
全局Serivce的缓存设置,没配置该节点将自动创建一个。
|
||||
enabled: 是否开启缓存功能。默认: true
|
||||
source: 远程CacheSource的资源名
|
||||
remote: 远程CacheSource的资源名
|
||||
broadcastable: 存在远程CacheSource时修改数据是否进行广播到其他集群服务中。默认: true
|
||||
-->
|
||||
<cache enabled="true" source="xxx"/>
|
||||
<cache enabled="true" remote="xxx" broadcastable="true"/>
|
||||
```
|
||||
2
src/main/java/org/redkale/cache/Cached.java
vendored
2
src/main/java/org/redkale/cache/Cached.java
vendored
@@ -27,7 +27,7 @@ public @interface Cached {
|
||||
|
||||
/**
|
||||
* 缓存的key,支持参数动态组合,比如"key_#{id}" <br>
|
||||
* '@'开头的key值视为CacheKeyGenerator对象名称 <br>
|
||||
* <b>'@'开头的key值视为CacheKeyGenerator对象名称</b> <br>
|
||||
*
|
||||
* @see org.redkale.cache.spi.CacheKeyGenerator#name()
|
||||
*
|
||||
|
||||
@@ -195,7 +195,15 @@ public class CacheManagerService implements CacheManager, Service {
|
||||
boolean nullable,
|
||||
Duration expire,
|
||||
ThrowSupplier<T> supplier) {
|
||||
return getSet(this::localGetCache, this::localSetCache, hash, key, type, nullable, expire, supplier);
|
||||
return getSet(
|
||||
(id, ex, ct) -> localSource.get(id, ct),
|
||||
this::localSetCache,
|
||||
hash,
|
||||
key,
|
||||
type,
|
||||
nullable,
|
||||
expire,
|
||||
supplier);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -219,7 +227,14 @@ public class CacheManagerService implements CacheManager, Service {
|
||||
Duration expire,
|
||||
ThrowSupplier<CompletableFuture<T>> supplier) {
|
||||
return getSetAsync(
|
||||
this::localGetCacheAsync, this::localSetCacheAsync, hash, key, type, nullable, expire, supplier);
|
||||
(id, ex, ct) -> localSource.getAsync(id, ct),
|
||||
this::localSetCacheAsync,
|
||||
hash,
|
||||
key,
|
||||
type,
|
||||
nullable,
|
||||
expire,
|
||||
supplier);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -302,7 +317,15 @@ public class CacheManagerService implements CacheManager, Service {
|
||||
boolean nullable,
|
||||
Duration expire,
|
||||
ThrowSupplier<T> supplier) {
|
||||
return getSet(this::remoteGetCache, this::remoteSetCache, hash, key, type, nullable, expire, supplier);
|
||||
return getSet(
|
||||
(id, ex, ct) -> remoteSource.get(id, ct),
|
||||
this::remoteSetCache,
|
||||
hash,
|
||||
key,
|
||||
type,
|
||||
nullable,
|
||||
expire,
|
||||
supplier);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -326,7 +349,14 @@ public class CacheManagerService implements CacheManager, Service {
|
||||
Duration expire,
|
||||
ThrowSupplier<CompletableFuture<T>> supplier) {
|
||||
return getSetAsync(
|
||||
this::remoteGetCacheAsync, this::remoteSetCacheAsync, hash, key, type, nullable, expire, supplier);
|
||||
(id, ex, ct) -> remoteSource.getAsync(id, ct),
|
||||
this::remoteSetCacheAsync,
|
||||
hash,
|
||||
key,
|
||||
type,
|
||||
nullable,
|
||||
expire,
|
||||
supplier);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -808,6 +838,7 @@ public class CacheManagerService implements CacheManager, Service {
|
||||
* @param <T> 泛型
|
||||
* @param hash 缓存hash
|
||||
* @param key 缓存键
|
||||
* @param expire 过期时长,Duration.ZERO为永不过期
|
||||
* @param type 数据类型
|
||||
* @return 数据值
|
||||
*/
|
||||
@@ -833,27 +864,12 @@ public class CacheManagerService implements CacheManager, Service {
|
||||
}
|
||||
}
|
||||
|
||||
protected <T> CacheValue<T> localGetCache(String id, Duration expire, Type cacheType) {
|
||||
return localSource.get(id, cacheType);
|
||||
}
|
||||
|
||||
protected <T> CompletableFuture<CacheValue<T>> localGetCacheAsync(String id, Duration expire, Type cacheType) {
|
||||
return localSource.getAsync(id, cacheType);
|
||||
}
|
||||
|
||||
protected <T> CacheValue<T> remoteGetCache(String id, Duration expire, Type cacheType) {
|
||||
return remoteSource.get(id, cacheType);
|
||||
}
|
||||
|
||||
protected <T> CompletableFuture<CacheValue<T>> remoteGetCacheAsync(String id, Duration expire, Type cacheType) {
|
||||
return remoteSource.getAsync(id, cacheType);
|
||||
}
|
||||
|
||||
/**
|
||||
* 远程异步获取缓存数据, 过期返回null
|
||||
*
|
||||
* @param <T> 泛型
|
||||
* @param id 缓存键
|
||||
* @param expire 过期时长,Duration.ZERO为永不过期
|
||||
* @param cacheType 数据类型
|
||||
* @return 数据值
|
||||
*/
|
||||
|
||||
@@ -3,11 +3,10 @@
|
||||
*/
|
||||
package org.redkale.lock;
|
||||
|
||||
import static java.lang.annotation.ElementType.METHOD;
|
||||
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import static java.lang.annotation.ElementType.METHOD;
|
||||
import java.lang.annotation.Retention;
|
||||
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||
import java.lang.annotation.Target;
|
||||
import org.redkale.service.LoadMode;
|
||||
|
||||
@@ -15,7 +14,8 @@ import org.redkale.service.LoadMode;
|
||||
* //TODO 待实现
|
||||
*
|
||||
* <p>标记在Service的锁接口, 方法有以下限制: <br>
|
||||
* 2、方法必须是protected/public 3、方法不能是final/static
|
||||
* 1、方法必须是protected/public <br>
|
||||
* 2、方法不能是final/static <br>
|
||||
*
|
||||
* <p>详情见: https://redkale.org
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user