CacheKeyGenerator

This commit is contained in:
redkale
2024-05-30 15:37:50 +08:00
parent f556d9fe29
commit b5b8e5b59b
2 changed files with 24 additions and 3 deletions

View File

@@ -106,7 +106,7 @@ public class CacheAction {
this.keyGenerator = resourceFactory.findChild(generatorName, CacheKeyGenerator.class);
} else {
MultiHashKey dynKey = MultiHashKey.create(paramNames, key);
this.keyGenerator = (t, a, args) -> dynKey.keyFor(args);
this.keyGenerator = CacheKeyGenerator.create(dynKey);
}
this.remoteExpire = createDuration(cached.getRemoteExpire());
}

View File

@@ -4,6 +4,9 @@
package org.redkale.cache.spi;
import java.util.Objects;
import org.redkale.util.MultiHashKey;
/**
* 缓存key生成器
*
@@ -33,7 +36,25 @@ public interface CacheKeyGenerator {
*
* @return name
*/
default String name() {
return "";
public String name();
/**
* 根据MultiHashKey生成一个CacheKeyGenerator
* @param key MultiHashKey
* @return
*/
public static CacheKeyGenerator create(MultiHashKey key) {
Objects.requireNonNull(key);
return new CacheKeyGenerator() {
@Override
public String generate(Object target, CacheAction action, Object... params) {
return key.keyFor(params);
}
@Override
public String name() {
return "";
}
};
}
}